問題タブ [shrine]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Shrine と image_processing gem で画像をぼかします
Shrine gem を使用して、Ruby on Rails アプリケーションで画像をぼかしようとしています。これは私のアップローダーファイルです:
モデル、コントローラー、およびフォームを最も基本的な方法でセットアップします。これは、Shrine 入門チュートリアル ( https://shrinerb.com/docs/getting-started ) と同じです。画像を保存しようとすると、次のエラーが発生します。
*** MiniMagick::Error 例外: エラー
convert /tmp/shrine20191112-4479-1xo3vgk.jpg -auto-orient -blur 0x5 -resize 1024x1024> -sharpen 0x1 /tmp/image_processing20191112-4479-1w094sa.jpg
で失敗しました: convert: 認識されないオプション `-blur 0x5' @ error/convert.c/ConvertImageCommand/893. "
なくてappend('-blur 0x8')
も問題なく動作しますが、何が間違っていますか? 私の ImageMagick のバージョンは7.0.7-11です。
ところで、libvipsで画像をぼかすことは気にしません。ImageMagickの経験が豊富なので、それを使用しました。
ruby-on-rails - ファイルをアップロードし、処理と検証を処理する方法 - 非常に一般的な概要?
当面の問題
- 私はレールアプリを持っています。
- ユーザーはファイルをアップロードします。1 ファイルから 3000 ファイルの間の任意の場所。zip ファイルの場合もあれば、そうでない場合もあります。これらのファイルのアップロードでサーバーを停止させたくないので、この問題の解決策を探しています。
- 圧縮されたファイルは解凍する必要があります。
- 次に、ユーザーが以前に同じファイルをアップロードしたことがあるかどうかを確認します。つまり、ユーザーが 1 週間前に同じファイル (2) を既にアップロードしている場合、これは問題です: (i) その特定のファイルのアップロードを許可しないか、ユーザーに尋ねます:同じファイルをもう一度アップロードするには?
- 次に、バックエンドの適切なモデル/レコード内のファイルへのキー/リンクを保存します。
上記を処理するための最良のワークフローは何か、つまり非常に一般的な概要を考えていました。つまり、AWS Lambda / Google クラウド コンピューティングなどを使用して上記の問題を処理するのが最適でしょうか? この状況に対処するには、Shrine gem をどのように使用すればよいでしょうか? バックグラウンド ジョブを使用するのではなく、AWS Lambda を使用することは理にかなっていますか?
私の好みは、Shrine gem をアップロードに使用することです。
私のアイデア:
- クライアント側では、ユーザーはアップロードしたいファイルをドラッグ アンド ドロップします。
- すべてのファイルは、Shrine gem を介して一時的なバケットの場所に (圧縮されているかどうかに関係なく) アップロードされます。
- zip ファイルがアップロードされている場合は、おそらく AWS ラムダ関数をトリガーしてファイルを解凍する必要があります。その場合、結局のところ、検証の問題を処理するために、これらのファイルのキーを何らかの形でクライアントに返す必要がありますが、AWS ラムダ関数はどのようにしてこのリクエストを元のクライアント側に返すことができるのでしょうかリクエストの発信元はどこですか?むしろ、解凍された BLOB の ID を渡して、クライアント側から AWS ラムダ関数を生成する必要がありますか?
- 次に、いくつかの検証を実行する必要があります。ファイルが重複している状況を処理する必要があります。これらのファイルが既にアップロードされているかどうかについては、レールを使用して確認する必要があります。
- これらの検証の問題が処理された後、ユーザーがフォームを送信すると、すべてのキーが適切なレコードに保存されます。
これらのアイデアは決して規範的なものではありません
これをすべて行う最善の方法について、非常に一般的なアドバイスを求めています。私は決して AWS に縛られているわけではありません。Google や Azure も同様に簡単に使用できます。上記に関するガイダンスをいただければ幸いです。
具体的な質問:
- AWS ラムダ関数はどのようにトリガーされますか?
- アップロードされたファイルのキーをクライアントに戻すにはどうすればよいでしょうか?
一般的な概要とはどういう意味ですか?
一般的な概要の例を次に示します。
(1) Heroku でホストされている Rails を介して S3 にファイルをアップロードおよび解凍しますか?
(2) https://www.quora.com/How-do-I-extract-large-zip-files-in-AWS-Lambda
正しい方向へのポインタは大歓迎です。
乾杯!