从werkzeug.datastructures.FileStorage计算md5,但将对象保存为文件为空

时间:2017-03-03 03:10:26

标签: python flask md5

@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'是空的。

有没有办法从文件中获取md5并保存整个文件?

1 个答案:

答案 0 :(得分: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')