从 werkzeug.datastructures.FileStorage 计算 md5,但将对象保存为文件为空
Calculate md5 from werkzeug.datastructures.FileStorage, but saving the object as file is empty
@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 之后,文件 md5name+'.pdf' 为空。
有没有办法从文件中获取md5并保存整个文件?
因为您已经对文件流执行了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')
@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 之后,文件 md5name+'.pdf' 为空。
有没有办法从文件中获取md5并保存整个文件?
因为您已经对文件流执行了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')