2016-11-24 53 views
1

我有一個rails-api項目,它提供了api來訪問我的數據。如何從使用carrierwave的rails-api獲取文件?

我使用carrierwave存儲我的文件,我的模型名爲User,文件屬性名爲image

因此,圖像屬性包含file_name,url和一些其他信息。

爲了通過API翻譯這個文件,我增加了寶石carrierwave-base64

我明白上傳過程。客戶端應用程序將文件編碼爲base64 code,然後通過json消息發送到後端。例如:

{user: {email: "[email protected]", image: "data:image/jpg;base64,#{base64_image}"} 

所以當後端收到的JSON請求,carrierwave將解析的base64編碼的文件,並將其存儲到本地或S3

我不明白,是Download進程:

當我請求用戶信息時,我認爲圖像文件將在json消息中作爲base64 code傳輸,然後客戶端應用程序將base64 code編碼爲文件(圖像),並且然後顯示。

但實際上,我可以提供JSON數據,是該文件的URL,而不是以base64編碼。

我想從API服務器的文件(影像)的原因是因爲我不想給客戶端應用程序通過網址直接訪問S3。所以每當客戶端應用程序想要獲取文件時,它都會請求api-server,並且api-server將獲取文件並傳輸到客戶端。

有沒有人可以解釋如何做下載?

或者,如果我是在一個錯誤的戰略思想,我需要另一個API端點響應文件對象,不只是與用戶模型陪伴。

乾杯。

+0

你是用一個上傳一件好事,但同時下載你需要ŧ o發送URL沒有base64,這是我在我的項目中做的,它的傳統和好方法是在s3上讀取公共權限,併爲您的客戶上傳和使用expiring_url(60,:thumb) –

回答

0

限制對象訪問存儲在Amazon S3

https://github.com/thoughtbot/paperclip/wiki/Restricting-Access-to-Objects-Stored-on-Amazon-S3 

你沒有上傳視頻是一件好事,但是在下載你需要發送URL沒有Base64和傳統 也爲securrity目的,你可以把公共讀同時上傳的S3權限和使用expiring_url(60:拇指)爲您的客戶

在這個URL在您指定的時間得到過期

相關問題