3

シナリオ

次のような単純な登録ページを含む Web アプリケーションを作成しているとします。

  • 名前
  • Eメール
  • パスワード
  • プロフィールの写真

わかりました。次に、ユーザーは [プロファイルの作成] をクリックします。理想的には、次のことが起こることを望みます..

  1. クライアント上で画像のサイズを変更します (CPU を使用)

  2. その画像を S3 のユニークな休憩場所に投稿するには。(ホスティング サーバーを介さずに、dyno の費用がかかり、過度に機能するシングル スレッド Rails アプリで貴重な時間を費やすことはありません)。

  3. イメージが S3 に正常にアップロードされたことを知るため。

  4. 画像が安全で健全な状態になったら、名前、電子メール、パスワード、および問題のある画像へのパスを使用して、2 番目のフォームをクラウド サーバーに送信します。

質問

このアプローチは正しいと思いますか?

また、Railsでこれを行う方法の例を知っている人はいますか? 理想的には、ユーザーからの違いを抽象化する方法を見つけようとしています。そうすれば、ユーザーは 1 つの保存ボタンを押すだけで済みます。

私は断片を見つけましたが、それをすべて結び付けるものは何もありません。

これまでのところ、これらの記事のいくつかで概説されているように、SwfUpload の使用を検討してきました...

http://vimeo.com/11363680

https://github.com/blueimp/jQuery-File-Upload/wiki/Upload-directly-to-S3

Railsに関して言えば、私はせいぜい愛好家ですが、これについてよく考えられたパターンがあるかどうか疑問に思っていますか? 私がこれまで見てきたものはすべて (その仕事と同じくらい素晴らしいものであり、役に立ちます)、まだ半分しか進んでいないようです。

現代の開発の中で人々が毎日対処しなければならないことをするために懸命に戦っているように感じているだけで、何かが足りないような気がします...

4

2 に答える 2

0

私が間違っている場合は訂正してください。ただし、クライアント (つまり JavaScript) ですべてを実行したいようです。

Canvas を使用して画像のサイズを変更する方法があると思いますが、1) 見栄えがよくない (単純なトリミングでない限り)、2) これは、ユーザーが最新のブラウザーを使用していることを前提としています。3) Canvas を使用する場合は、処理が完了したら、画像に戻す必要があります。つまり、データをどこかに送信してファイルに保存する必要があります。つまり、サーバーにヒットします。

S3 API に直接 POST するフォームを使用して S3 に直接投稿することは問題ありませんが、コントロールがページを離れて戻ってこないため、画像がいつアップロードされたかがわからない場合を除きます。これは、Ajax を使用してそれを行う必要があることを意味します... ただし、クロスオリジン ポリシーに遭遇する場合を除きます。iframe + postMessage トリックでこれを行うことができるかもしれませんが、それはサーバーに打撃を与えます。したがって、この問題を解決する唯一の方法は、Gmail の添付ファイル アップローダーである Flash を使用することだと思います (いずれにせよ、これはあなたが進んでいる道のように思えます)。そのルートを下る場合は、ワークフローを少し変更する必要がある場合があります。つまり、送信時に画像をアップロードしてから、送信されるまで待ってから続行するのではなく、ユーザーに手動で画像をアップロードして送信をブロックさせます。画像がアップロードされるまでボタンを押します。(これ'

したがって、ホスティング プロバイダーの変更やサーバーの追加以外に、問題に対する完全な解決策があるかどうかはわかりませんが、少なくともいくつかのアイデアはあります。

于 2012-04-24T06:32:05.400 に答える
0

別の問題を探しているときにこれに出くわしました.S3でできることは、ブラウザのアップロードを使用して非表示のiframeに投稿することです. デフォルトでは、ブラウザー アップロードを使用する場合、リダイレクト先を指定できます。その後、登録フォームを送信するリダイレクト先の JavaScript を呼び出すことができます。アップロードしたい画像ファイルでこれを成功させました。次に、heroku dyno を呼び出して、バックグラウンド タスクでファイルを S3 から取得し、サムネイルを生成してから、サムネイルを S3 に戻します。

ただし、ブラウザでのサイズ変更は非常に困難です。考えられる解決策の 1 つについては、HTML5 キャンバスでの画像のサイズ変更を参照してください。

于 2012-08-23T11:53:24.117 に答える