[英]How to use storage to upload a file without active record in Rails 5?
我是一名PHP程序員,最近開始與ROR合作。
在PHP + Laravel中,有一個非常方便的實現來上傳文件,例如
Storage::disk('my_sftp_server')->put('hello.txt', 'Hello World');
https://laravel.com/docs/5.7/filesystem
凡my_sftp_server在storage.yml文件的Laravel版本設置。
由於Laravel完全基於Rails,因此我認為應該采用類似的方法來實現Rails。 但是,當我在Google中搜索Rails Storage時,所有結果都與ActiveStorage有關,在我的情況下,我的文件與我的活動記錄沒有直接關系。
有什么方法可以使用已設置的Rails存儲上載文件?
我正在開發一個運輸系統,最終我需要創建一個合並的報告,並使用SFTP將其保存在運輸服務器中。
您可以將params
項寫入磁盤:
IO.copy_stream(params[:files][0].tempfile, local_filepath)
你問的不是一個好方法。 原因很簡單,每當您存儲在外部存儲器中時,都必須定義各種參數,例如權限,密鑰等。
讓我舉個例子,您現在正在存儲用戶文檔,稍后將存儲與不同對象相關的不同文檔和圖像。 即使您拒絕提供這種相關性,Rails也完全基於面向對象的編程。 因此,您必須為要存儲的任何文檔提供對象引用,以便可以正確檢索它。
回形針是用於它的寶石之一。
要將其存儲在本地應用程序路徑中,
@user.document.copy_to_local_file(nil, path)
在上面的文檔中,這里可以是attr_accessor
對用戶的非db字段。 copy_to_local_file
是回形針方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.