我想在将文件上传到S3之前读取文件的大小,以便检查是否有足够的可用存储空间。以下代码有效。但是,将文件上载到S3时该文件为空。如果我删除了检查文件大小的部分,则会正确上传。有没有其他方法来获取文件大小?该文件来自HTML页面的上传表单,我将其直接上传到S3而不先将其保存到服务器。
availablestorage = getavailablestorage() #gets the available storage in bytes
latestfile = request.files['filetoupload'] #get the file from the HTML form
latestfile.seek(0,2)
latestsize = latestfile.tell() #this gets the size of the file
if availablestorage < latestsize:
return "No space available. Delete files."
bucketname = request.form.get('spaceforupload')
conn = boto3.client('s3')
conn.upload_fileobj(latestfile, bucketname, latestfile.filename)
return redirect(url_for('showspace', spacename=bucketname))
答案 0 :(得分:2)
当然,你只是寻求最终得到大小,现在latestfile
处理当前位置是&#34;文件结束&#34;。
只是做:
latestfile.seek(0)
在运行conn.upload_fileobj
之前。这应该有用。