读取文件大小

时间:2017-10-01 15:25:05

标签: python python-3.x flask boto3

我想在将文件上传到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))

1 个答案:

答案 0 :(得分:2)

当然,你只是寻求最终得到大小,现在latestfile处理当前位置是&#34;文件结束&#34;。

只是做:

latestfile.seek(0)

在运行conn.upload_fileobj之前。这应该有用。