2013-10-13 33 views
1

在Ruby on Rails中,我讓用戶上傳文件。我做了一些東西,然後想通過obj = bucket.objects [文件名] .write(request.body.read)將此傳遞給Amazon S3在Ruby on Rails中,如何獲得沒有元數據的請求負載

我想我可以使用request.body.read或request.raw_post,然而,有效載荷包含其中的所有這些元數據,如Content-Disposition和Content-Type。我怎樣才能得到正是用戶上傳的有效載荷部分?

舉例來說,這是request.body.read,但我只是想從開始部分「Y‡JFIF ......」

------WebKitFormBoundaryWc3LdZGmhHmhJeuT 
Content-Disposition: form-data; name="file"; filename="test.jpg" 
Content-Type: image/jpeg 

ˇÿˇ‡JFIFHHˇ·... 
...more data... 
------WebKitFormBoundaryWc3LdZGmhHmhJeuT-- 

回答

-1

你會發現文件對象PARAMS - 在你的情況下,鑰匙:fileparams[:file]

params散列中的對象是IO子類的一個實例。根據上傳文件的大小,它實際上可能是一個StringIO或由臨時文件支持的文件實例。在這兩種情況下,對象的original_filename屬性都將包含文件在用戶計算機上的名稱以及包含上載文件的MIME類型的content_type屬性。

只讀取文件內容調用read

uploaded_file = params[:file] 
uploaded_file.original_filename #=> returns in your example 'test.jpg' 
uploaded_file.read #=> returns the content of the file (ˇÿˇ‡JFIFHHˇ·...) 

查看更多about uploading files in the Rails Guides