我想從遠程存儲服務(而不是s3 :-))使用Ruby on Rails 4.2流客戶端的文件。遠程文件流到客戶端在ruby/rails 4 /獨角獸/ nginx
我的服務器需要停留在事物的中間來驗證客戶端請求,但也建立了對遠程存儲服務的請求,因爲對該服務的所有請求都需要使用自定義標頭參數進行驗證。這使得不可能做一個簡單的redirect_to並讓客戶端直接下載文件(但是讓我知道這是否實際上可能使用rails!)。另外我想保留文件的隱藏URL爲客戶端。
到目前爲止,我使用的是名爲ZipLine的gem,但這也不起作用,因爲在將遠程文件發送到客戶端之前,它仍然會對其進行緩衝。當我使用獨角獸/ nginx時,這可能是由於這兩者中的任何一個設置造成的,這阻止了正確的流式傳輸。
按軌道文檔的說明我已經嘗試添加
listen 3000, tcp_nopush: false
到config/unicorn.rb但無濟於事。
一個解決方案可能是在本地緩存遠程文件一段時間,並提供該文件。這將使得一些事情變得簡單,而且創造新的麻煩一樣保持同步遠程和緩存文件,設置正確的觸發緩存過期等
所以總結起來:
1)如何實現上面的情況?
2)如果這不是一種智能/有效的做事方式,我應該只是緩存一個遠程副本?
3)在特定情況下您有什麼經驗/建議?
我遇到了各種圍繞interweb散佈的解決方案,但都沒有激發出完整的解決方案。
謝謝!
嗨Corstiaan,您現在可能已經找到了解決方案。我遇到了同樣的問題。這裏是我的線程:https://stackoverflow.com/questions/45714918/download-as-attachment-not-streaming然而,關於zipline它確實爲我工作。我使用Paperclip和S3 – Maxence