我应该将mp4文件上传到数据存储区,因此我在我的appengine上添加了以下方法:
def set_video():
if request.method == 'GET':
return '''
<!doctype html>
<title>Upload video</title>
<h1>Upload video</h1>
<form method="POST"
action=""
role="form"
enctype="multipart/form-data">
<p><input type=file name=Video.mp4>
<input type=submit value=Upload>
</form>
'''
else:
file = request.files['Video.mp4']
if _file:
cloud_file = cloudstorage.open(BUCKET_NAME + "video." + _file.filename.rsplit('.', 1)[1],
mode='w', content_type=_file.mimetype)
_file.save(cloud_file)
cloud_file.close()
return "Success"
如果我使用LabVIEW的后多部分对象,一切运行良好,并且我能够存储新视频。但是,使用CURL我遇到了一个问题:我似乎无法设置multipart的参数。 我使用了以下命令:
curl -include --form name=Video.mp4 --form upload=@Video.mp4 -A "National Instruments LabVIEW" http://MY_URL -0
我使用了相同的LabVIEW用户代理。 嗅探与wireshark的沟通,我可以看到:
Encapsulated multipart part: (application/octet-stream)
Content-Disposition: form-data; name="upload"; filename="Video.mp4"\r\n
mime_multipart.header.content-type
所以,&#39;名称&#39;参数是&#34;上传&#34;而不是&#34; Video.mp4&#34;与LabVIEW版本一样:
Encapsulated multipart part: (application/octet-stream)
Content-Disposition: form-data; name="Video.mp4"; filename="Video.mp4"\r\n
Content-Type: video/mpeg\r\n\r\n
有人可以说我做错了吗?