簡體   English   中英

使用RestClient無法從S3下載

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM