0

ユーザーがファイルをアップロードするか、既存のファイルへの URL を入力できるようにするフォームを開発しています。

アイデアは、ユーザーがさまざまな「マルチメディア」ファイルをエントリに添付できるようにすることです。その一部はハード ドライブからのファイル (画像、Word ドキュメントなど) であり、一部は URL (YouTube ビデオ、flickr の画像など) です。

これを達成する方法についてのアイデアはありますか? 現在、ファイルのアップロードを処理するためにcarrierwaveを使用していますが、うまく機能しているようですが、URLも保存したいと考えています。

4

2 に答える 2

2

私がおそらく行うことは、ファイルがディスクからのものか外部 URL からのものかを選択するために、ファイル アップロード フォームにドロップ ダウンを設定することです。

デフォルトでは「ディスクから」に設定されており、外部 URL を選択した場合は、AJAX マジックを使用してファイル アップロード テキスト ボックスを非表示にし、外部 URL/スクリプトなどを使用するテキスト ボックスを用意することができます。

テーブルには、さらに2つの列を保持できます。

1 - 外部 URL

2 - ファイル カテゴリ (外部/アップロードされたファイル)

そうすれば、ファイルを区別し、ビューに何を表示するかを知ることができます

HTH

于 2012-11-25T08:06:59.047 に答える
1

本当に持っていない限り、URLを保存しないでください。重要なのは、URLを保存するときに、サムネイルや複数のスタイルの画像を作成するためにURLを処理することはできないということです。また、ページに画像を表示する場合は、外部からの呼び出しを行う必要があります。これにより、ページの速度が低下したり、さらに悪化したりする可能性があります。将来、リンクが切断された場合、ユーザーには空の画像が表示されます。

これは、YouTubeビデオにも当てはまります。ただし、ビデオでは通常、ビデオだけでなく、より多くの情報を保存および表示する必要があります。2つのテーブルを作成できます。1つはビデオ用、もう1つは画像用です。ビデオテーブルには、タイトル、説明、作成者、期間、埋め込みコード、サムネイル(画像の添付ファイル)があります。

URLが指定されたら、任意の画像をダウンロードして、通常のファイルのように保存できます。キャリアウェーブの使用-

@object.remote_image_url = "http://www.foo.com/file.png"
@object.save

ビューでは、おそらく並べて両方のオプションがあり、それらを異なるアクションに投稿させることができます。したがって、ファイルが選択されて投稿された場​​合は、通常どおりに保存します。URLが入力されている場合は、それがビデオサイトであるかどうかを確認できます。ビデオの場合は、video_info gemを使用して情報を解析し、保存します。それ以外の場合は、上記の2行を使用して、URL画像を保存します。

ノート

私の答えは、ユーザー入力の品質/性質については説明していません。私の意見では、誰かが間違ったURLを入力する可能性が高いので、URLを画像として保存する試みを、begin-rescueブロックにラップし、おそらくJSを使用して、ビデオドメインをいくつかのWebサイトに制限します。解析できるようになります。

于 2012-11-25T02:33:36.923 に答える