2017-10-01 3 views
0

十分な空き容量があるかどうかを確認するために、ファイルを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)) 

答えて

2

、あなただけのサイズを取得するために最後までシーク、今latestfile現在位置を扱う「ファイルの終わり」です。

だけで実行します。

latestfile.seek(0) 

conn.upload_fileobjを実行する前に。それはうまくいくはずです。

+0

時にはとても簡単です。ありがとうございました。 – user3080315

関連する問題