[解決済み] Railsでファイルをアップロードする
質問
私はrailsの初心者で、CRUDテクニックを使ってRESTfulなウェブサイトを書いています。今のところ、私は3つのページを作成し、すべてのページでユーザーがデータベースから行を作成、編集、および削除することができます。しかし、a) Railsでファイルシステムがどのように動作するか知らないので、ファイルがどこに保存されるべきかがわかりません。ファイルは100kb程度で、常にダウンロードされるため、一時的なストレージに保存することはできません。また、b) ファイルに書き込む方法がわかりません。
私が上で述べたこと、つまり入力フォームにアップロード入力を作成し、その後、別のディレクトリのファイルパスにファイルを書き込む方法を教えていただけると助かります。
どのように解決するのですか?
2018年の更新情報
以下に書かれていることはすべてそのままですが、Rails 5.2には新たに
active_storage
が追加され、S3 (または他のクラウドストレージサービス) への直接アップロードや画像変換などができるようになりました。をチェックする必要があります。
rails ガイド
をチェックして、何が自分のニーズに合っているかを自分で判断してください。
ファイルアップロードをうまく解決してくれるgemはたくさんありますが( https://www.ruby-toolbox.com/categories/rails_file_uploads を参照)、railsには組み込みのヘルパーがあり、簡単に独自のソリューションを開発することができます。
を使用します。
file_field
-ヘルパーを使用すると、rails がアップロードを処理します。
<%= form_for @person do |f| %>
<%= f.file_field :picture %>
<% end %>
以下のように、アップロードされたファイルにコントローラでアクセスできるようになります。
uploaded_io = params[:person][:picture]
File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file|
file.write(uploaded_io.read)
end
実現したいことの複雑さによりますが、簡単なファイルのアップロード/ダウンロードのタスクであればこれで十分です。この例はrailsガイドから引用したもので、詳細はそちらを参照してください。 http://guides.rubyonrails.org/form_helpers.html#uploading-files
関連
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Git リポジトリで削除されたファイルを検索して復元する方法
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] Microsoft Officeをインストールせずに、C#でExcel(.XLSおよび.XLSX)ファイルを作成するにはどうすればよいですか?
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] ファイルを作成し、書き込むにはどうすればよいですか?
-
[解決済み] ファイルに行を書き込む正しい方法?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] RESTful WebServiceにファイルや関連データをJSONで投稿する。
-
[解決済み】Railsの認証トークンを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: SymbolからIntegerへの暗黙の変換がない。
-
[解決済み】Rails 4 RoutingError: ルートが一致しない[POST]。
-
[解決済み] どのようにrailsでラジオボタンを正しく使用するには?
-
[解決済み] RailsのRootディレクトリのパス?
-
[解決済み] ウェブパッカーがアプリケーションを見つけ出せない
-
[解決済み] rspec 3 - クラスメソッドをスタブ化する
-
[解決済み] Rails / Haml: 投稿フォームを作成するには?
-
[解決済み] バリデーションなしで属性を更新する方法
-
[解決済み] bundle install --without production は何をするのですか?
-
[解決済み] ActionController::RoutingError: 初期化されていない定数MicropostsController