[英]Unable to upload file to AWS S3 using python boto3 and upload_fileobj
[英]Upload File to AWS S3 from AppEngine using boto3
如何从AppEngine应用程序将文件上传到AWS S3? 用户使用python提交文件上传表单并从AppEngine应用程序提交,我必须将文件上传到S3。
class FileUpload(webapp2.RequestHandler):
def post(self):
file_data = self.request.POST['file']
要将文件对象上传到S3,我们必须使用open
方法。 Boto文档
with open('filename', 'rb') as data:
s3.upload_fileobj(data, 'mybucket', 'mykey')
因此,这里如何使用open
方法访问file_data
对象?
您应该能够省略with open
部分的。 根据您链接到的Boto文档 ,您需要一个“文件状对象”作为s3.upload_fileobj()
的第一个参数。 请记住,self.request.POST ['file']返回一个cgi.FieldStorage对象,您可以像这样获得类似文件的对象( source ):
field_storage_obj = self.request.POST.get('file')
file_like_obj = self.request.POST.get('file').file
# or: file_like_obj = field_storage_obj.file
该file_like_obj
实际上是一个实例StringIO的 ,它具有.read()
由一个类文件object.So您的最终代码的博托要求是这样的方法:
class FileUpload(webapp2.RequestHandler):
def post(self):
file_data = self.request.POST['file'].file
s3.upload_fileobj(file_data, 'mybucket', 'mykey')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.