使用Python和Flask上传到Google云端硬盘时,文件大小为零
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Python和Flask上传到Google云端硬盘时,文件大小为零相关的知识,希望对你有一定的参考价值。
我正在尝试将Google Drive API与Flask结合使用,以将文件上传到Google云端硬盘。要上传文件,我使用以下代码:
@app.route('/upload_google', methods=['GET','POST'])
def upload_google():
if not google.authorized:
return redirect(url_for("google.login"))
file = request.files['myfile']
filename = secure_filename(file.filename)
para = {
"name": filename,
'mimeType':'image/jpeg',
}
files = {
'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'),
'file': request.files['myfile']
}
uploaden = google.post(
"upload/drive/v3/files",
files=files,
)
print (uploaden.text)
return('upload succesfull')
在HTML模板中,我使用以下形式:
<form method=POST enctype=multipart/form-data action="upload_google">
<input type=file name=myfile>
<input type=submit>
</form>
上传文件到谷歌工作,唯一的问题是他们上传没有文件大小,我无法弄清楚原因。
答案
通过首先在本地保存文件然后在标头中打开它来解决问题:
@app.route('/upload_google', methods=['GET','POST'])
def upload_google():
if not google.authorized:
return redirect(url_for("google.login"))
file = request.files['myfile']
filename = secure_filename(file.filename)
UPLOAD_FOLDER = ''
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
para = {'name': filename,
'mimeType': mimetype}
files = {'data': ('metadata', json.dumps(para), 'application/json; charset=UTF-8'),'file':(filename, open(UPLOAD_FOLDER+'/'+filename,'rb'), mimetype,{'Expires': '0'})}
r = google.post('https://www.googleapis.com/upload/drive/v3/files',files=files)
return redirect("/drive")
以上是关于使用Python和Flask上传到Google云端硬盘时,文件大小为零的主要内容,如果未能解决你的问题,请参考以下文章
python 使用google appengine blobstore api上传的Flask示例。
使用Visual Basic将文件上传到Google云端硬盘