Telecharger des gros gros fichiers sous IIS avec Python

February 25, 2006 on 5:56 pm | In General, Python, web | 2 Comments

Entre les quelques bugs de Python win32com et IIS, on peut se trouver bloquer par des erreurs bidons quant on veut faire telecharger aux utilisateurs de gros fichiers via HTTP (des fichiers pas contenus dans l’arboresence du site, ou protégés).

Voici un bout code qui permet de realiser cela sans souci grace à deux minis fonctions… (l’ai enlevé les try/catch optionnels)

<%@Language=“Python”%>
<%

import os

def headersDownload(fileName,size=None):
“”“mets les bons header HTTP pour IIS ““”
Response.Buffer = True
Response.AddHeader(“Content-Disposition”, “attachment;filename=%s” % fileName)
if size:
Response.AddHeader(“Content-Length”, “%s” % size)
Response.ContentType = “application/x-unknown”

def downloadFile(Filepath):
“”” lances le download ““”
file = open(Filepath, ‘rb’)
while 1:
t = file.read(8192)
if not t: break
Response.BinaryWrite(buffer(t))
Response.Flush()
file.close()

FileToDownload=r“d:downloadzBig_Big_File_Example.zip”

fileName=os.path.split(FileToDownload)[1]
fileSize = int(os.stat(FileToDownload)[6])

headersDownload(fileName,fileSize)
downloadFile(FileToDownload)
%>

et voila, le download est maintenant quasi-instantannée :)

2 Comments »

RSS feed for comments on this post. TrackBack URI

  1. Votre script m’interresse énormémént, mais je ne comprend pas comment il marche.
    Plus exactement, il n’y a pas de variable dans laquelle est stockée l’URL du fichier à télécharger. De plus la fonction os.stat() retourne un erreur quelque soit le fichier ciblé par FileToDownload.
    Pourvez vous indiquer plus précisement comment faire marcher ce script?

    Merci

    Comment by cyrpaut — 16 June 2007 #

  2. ce script doit etre dans une page par exemple download.asp. Une fois executé, le fichier dans la variable FileToDownload est balancé à l’utilisateur.
    quelle erreur vous renvoie os.stat() ? Il s’agit peut etre d’un probleme de permission ?

    Comment by Juju — 18 June 2007 #

Leave a comment

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Powered by WordPress with Pool theme design by Borja Fernandez.
Entries and comments feeds. Valid XHTML and CSS. ^Top^