[英]Download from S3 doesn't work using RestClient
我有一個壓縮圖像文件。 Windows上磁盤上的大小為125,966,232字節。 我使用Ruby aws-S3 gem將其上傳到S3。 從屬性窗格來看,它在S3上的大小也是125,966,232字節。
當我使用Web瀏覽器和圖像的公共URL將其下載到磁盤時,它下載良好,並且大小一致。 我的解壓縮實用程序也可以很好地解壓縮。
當我使用RestClient(1.6.7)將文件從S3存儲桶下載到磁盤時,下載后磁盤上的文件大小為126,456,885字節,大了890,653字節。 無法使用我的解壓縮實用工具解壓縮此成功下載,並且使用相同的S3文件重復運行此下載會獲得一個下載的文件,該文件的大小始終為126,456,885字節。
require 'rest_client'
local_file = "C:\\test\\test_download.cap"
s3_bucket = "my-bucket-not"
remote_S3_file_url = "https://s3.amazonaws.com/#{s3_bucket}/test_download.cap"
File.open(local_file, "w") do |f|
f.write RestClient.read remote_S3_file_url
end
我必須怎么做才能確保下載的文件大小完全相同和/或正確解壓縮?
我建議不要將文件另存為文本,而是另存為二進制。
您正在使用:
File.open(local_file, "w")
'w'
表示:
"w" Write-only, truncates existing file
to zero length or creates a new file for writing.
請改用'wb'
模式保存文件。 如果沒有'b'
,則行尾將轉換為Windows格式,從而有效地擴大了大小並破壞了文件的內容:
"b" Binary file mode
Suppresses EOL <-> CRLF conversion on Windows. And
sets external encoding to ASCII-8BIT unless explicitly
specified.
因此使用:
File.open(local_file, 'wb')
有關更多信息,請參見“ IO開放模式 ”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.