Domanda
Sto usando pycurl per caricare un file tramite script put e python cgi per ricevere il file sul lato server. In sostanza, il codice sul lato server è:
while True:
next = sys.stdin.read(4096)
if not next:
break
#.... write the buffer
Sembra funzionare con il testo, ma non con i file binari (sono su Windows). Con i file binari, il ciclo che esegue stdin.read si interrompe dopo aver ricevuto qualcosa tra 10kb e 100kb. Qualche idea?
Soluzione
Devi eseguire Python in modalità binaria. Cambia il tuo script CGI da:
#!C:/Python25/python.exe
o qualunque cosa dica a:
#!C:/Python25/python.exe -u
Oppure puoi farlo programmaticamente in questo modo:
msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
prima di iniziare a leggere da stdin
.
Altri suggerimenti
Utilizza mod_wsgi invece di cgi. Ti fornirà un file di input per il caricamento che è stato aperto correttamente.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow