J'utilise Apache 2.2.14 et Python 2.6 pour CGI sous Windows XP. Les fichiers envoyés via CGI sont corrompus. Un CR est inséré avant chaque LF. Les clients Firefox, IE et Curl donnent le même résultat. Le fichier a la taille correcte, mais les CR sont insérés partout, et les données sont décalées vers le bas et tronquées. Je peux regarder le fichier sur le serveur, et ça va.Apache: Télécharger les fichiers en insérant un CR avant chaque LF (même les tableurs)
Y a-t-il un commutateur dans Apache qui me manque?
Voici le code python pour écrire l'en-tête HTTP et envoyer le fichier:
outsize = os.path.getsize(outfile)
mheader = "Content-type: application/octet-stream\n"
mheader = mheader + "Content-Length: "+str(outsize) + "\n"
mheader = mheader + "Content-Disposition: attachment; filename=\"product.xls\"\n\n"
sys.stdout.write(mheader)
sys.stdout.write(file(outfile, "rb").read())
L'en-tête ressemble à ceci:
Content-type: application/octet-stream Content-Length: 84210 Content-Disposition: attachment; filename="product.xls"
Merci. J'ai ajouté la couleur et le setmode, mais cela n'a pas aidé. –
FIXE !!! Merci!!! Msvcrt.setmode (1, os.O_BINARY) est ce qui est nécessaire. Le handle pour stdout est 1. –