通常、私たちが最もイライラするのは、時間のかかる小さなタスクです。 S3 へのファイルのアップロードなど。要件は非常に単純ですが、ファイルをアップロードするために選択した方法によってタスクの効率が決まります。ファイルのアップロードはほとんどのアプリケーションに必要な機能であるため、RailsCarma はこのタスクを効率的に実行するための最良の方法の 1 つである Paperclip と Dropzone.js の使用に関する簡単なチュートリアルをまとめました。
- ペーパークリップ 添付ファイルを処理するための優れた機能を提供するため、画像やファイルをアップロードするための一般的な選択肢です。 「ペーパークリップ」ジェムは頼りになるオプションです。 Paperclip を使用すると、複数の画像やファイルをアップロードしたり、サムネイルを生成したり、画像のサイズを自動的に変更したりすることができます。大規模で活発なコミュニティを誇り、ほとんどの開発者の第一の選択肢となっています。
- ドロップゾーン.js ファイルのドラッグ アンド ドロップ (画像プレビュー付き) 機能を備えたオープン ソース ライブラリです。
- アマゾンS3 データを保存するための単純なストレージ デバイスです。これを使用して、画像やあらゆる種類のファイルを取得できます。
なぜペーパークリップなのか?
Paperclip は、次の理由から人気のあるファイル アップロード ツールです。
- ファイル キャッシュのサポート:
フォームの検証に失敗した場合、ユーザーがファイルを再度選択して再アップロードすることは望ましくありません。したがって、UX の観点からファイルのキャッシュが必要です。また、帯域幅も節約されます。
- 画像を処理する
Paperclip は、画像のサイズを変更したり、いくつかの異なる形式にトリミングしたりできるため、開発者はライブラリを選択できます。
- タスクを簡素化します!
Paperclip gem はコードを汚さず、テストが簡単です。
- ファイル処理を許可します
Paperclip では、EXIF データ抽出のためのファイル処理と、アップロードされた PDF、PSD、DOC、XLSX のサムネイル作成が可能です。
- CDN とストレージ サービスのサポートを提供
サーバーへの帯域幅を可能な限り低く保ち、サーバー障害によるデータ損失の可能性を回避したいため、これは大きな利点です。
- オンザフライ処理を提供
Paperclip は、リクエストごとに画像とファイルを処理します。これは、開発者がさまざまな状況に最適に適応するカスタム コンテンツを作成できるようにする革新的な機能です。
Dropzone の非同期イベントとは何ですか?
- 追加されたファイル: ファイルがリストに追加されたとき。
- 削除されたファイル: ファイルがリストから削除されるたびに使用されます。必要に応じて、これを聞いてサーバーからファイルを削除できます。
- サムネイル: サムネイルが生成されたとき。データ URL を 2 番目のパラメーターとして受け取ります。
- エラー: エラーが発生した場合は、エラー メッセージを 2 番目のパラメータとして受け取ります。また、エラーの原因が xmlhttprequest である場合は、xhr オブジェクトが 3 番目のパラメーターとして受信されます。
- 処理: ファイルが処理されるとき (キューがあるため、すべてのファイルがすぐに処理されるわけではありません)。このイベントは、以前は処理ファイルと呼ばれていました。
- 落とす: ユーザーがドロップ ゾーンに何かをドロップしました。
アプリケーションでペーパークリップを構成するにはどうすればよいですか?
- has_attached _file: アセット
- :ストレージ => :s3
- :S3_ホスト名 => ENV[“S3_ホスト名”]
- :S3_region => ENV[“S3_REGION”]
- :S3_プロトコル => ENV[“S3_プロトコル”]
- :path => “:account_id/:class/:source_id/:attachment/:file_name”,:s3_headers => {'ContentDisposition' => 'attachment', 'content-type' => 'application/octet_stream'},
:bucket => ENV[“S3_BUCKET”],
:s3_credentials => Proc.new{|a| a.instance.s3_credentials} - Do_not_validate_attachment_file_type :asset
- def s3_credentials
{:access_key_id => ENV[“S3_ACCESS_KEY_ID”], :secret_access_key => ENV[“S3_SECRET_ACCESS_KEY”]}
終わり
アプリケーションでカスタム パスを処理するにはどうすればよいでしょうか?
Paperclip.interpolates :attachment do |attachment, style|Image_extension = [“jpg”, “jpeg”, “gif”, “png”, “PNG”, “GIF”, “JPEG”, “JPG”] extname = ファイル。 extname(attachment.instance.asset_file_name).downcase.gsub(/\./, '') if img_extension.include? (extname) return “images” else return extname end end Paperclip.interpolates :file_name do |attachment, style|file_name =attachment.instance.asset_file_name End
S3 バケット内のデータは、必要なときにいつでも取得できます。ただし、これには制限が 1 つあります。異なるディレクトリ構造のカスタム パスの処理は非常に面倒になる可能性があります。そんな時に便利なのがペーパークリップです。これは、AWS を使用して S3 バケットに画像をアップロードして保存するための優れたツールです。
で レイルスカルマでは、世界中のクライアント向けに Ruby のフレームワークを使用した最先端の Web アプリケーション サービスを開発、提供しています。
他のレール開発関連の問題に対する革新的なソリューションが必要ですか? 今すぐご連絡ください!
最新のアップデートを購読する
関連記事