2016-03-30 2 views
2

ich den folgenden Code versucht haben, durch etwas in dem Beispiel zu modifizieren documentationHochladen von Excel mit web.py

class Upload(): 
    def POST(self): 
    web.header('enctype','multipart/form-data') 
    print strftime("%Y-%m-%d %H:%M:%S", gmtime()) 
    x = web.input(file={}) 
    filedir = '/DiginUploads' # change this to the directory you want to store the file in. 
    if 'file' in x: # to check if the file-object is created 
     filepath=x.file.filename.replace('\\','/') # replaces the windows-style slashes with linux ones. 
     filename=filepath.split('/')[-1] # splits the and chooses the last part (the filename with extension) 
     fout = open(filedir +'/'+ filename,'w') # creates the file where the uploaded file should be stored 
     fout.write(x.file.file.read()) # writes the uploaded file to the newly created file. 
     fout.close() # closes the file, upload complete. 

Das funktioniert aber nur für csv und txt-Dokumente. Für Excel/pdf usw. Datei wird erstellt, aber es kann nicht geöffnet werden (beschädigt). Was muss ich tun, um mit diesem Szenario fertig zu werden?

Ich sah this aber es geht darum, den Inhalt zu drucken, der meine Angelegenheit nicht anspricht.

Antwort

1

Sie benötigen wb (binär) Modus zu verwenden, wenn Sie die Datei öffnen:

fout = open(filedir +'/'+ filename, 'wb') 
+0

Dank es hat funktioniert .. finden Sie weitere erklären können? –

+1

@MarlonAbeykoon Wenn Sie das 'w' verwenden würden, würden Sie unter Windows beschädigte Dateien beim Schreiben des hochgeladenen Inhalts erhalten, da die Zeilenende-Zeichen anders gehandhabt werden, siehe http://StackOverflow.com/Questions/2665866/ Was-ist-das-w-gemein-in-diesem-Code-using-python. Ich hoffe, das hilft. – alecxe