2017-03-03 94 views
0
@app.route('/upload', methods=['GET', 'POST']) 
def upload_file(): 
    if form.validate_on_submit(): 
     #get pdf file 
     pdffile = form.pdfupload.data 
     #next line causes exception 
     filemd5 = hashlib.md5() 
     filemd5.update(pdffile.read()) 
     filemd5name = filemd5.hexdigest() 
     #next save file 
     pdffile.save(filemd5name+'.pdf') 

不幸的是,在hashlib.md5之後,filemd5name +'。pdf'是空的。從werkzeug.datastructures.FileStorage計算md5,但將文件保存爲文件爲空

有什麼辦法從文件中獲取md5並保存整個文件?

回答

0

因爲您已經對文件流執行了read,您需要將seek回到文件的起始位置才能成功保存。

@app.route('/upload', methods=['GET', 'POST']) 
def upload_file(): 
    if form.validate_on_submit(): 
     #get pdf file 
     pdffile = form.pdfupload.data 
     #next line causes exception 
     filemd5 = hashlib.md5() 
     filemd5.update(pdffile.read()) 
     filemd5name = filemd5.hexdigest() 
     #next save file 
     pdffile.seek(0) 
     pdffile.save(filemd5name+'.pdf')