2

私のRailsコントローラーには次の行があります

send_file("#{Rails.root}/test/image.png")

Web ページに、ユーザーが などのディレクトリに入力できるテキスト ボックスが必要です。ユーザーがC:/OldPictures/All/コントローラーを呼び出すリンクをクリックすると、テキスト ボックス内のディレクトリも読み取られ、ファイルimage.pngが次の場所にダウンロードされます。指定されたディレクトリ。私はそれをすることができますか?

4

2 に答える 2

4

いいえ。

セキュリティ上の理由から、Web サーバー (およびJavaScript を含む一般的な Web コード) は、クライアントのファイル システムを認識したり、ファイルのダウンロード先を指定したりできません。ダウンロード用のファイル名を提案することもできますが、それだけです (ファイルがサーバー上に持っている名前以外の名前に設定したい場合は、:filenameオプションを使用してください)。send_fileダウンロード場所は、ブラウザ、OS、およびユーザーの組み合わせによって決定されます。

于 2012-11-04T22:00:25.607 に答える
1

短い答え、はい

長い回答ですが、通常、さまざまな理由から、クライアント側のアプリがサーバー上のファイルの場所に関する情報を持つことは許可されていません。ユーザーは、Web アプリケーションを扱うときに、ファイルが実際に物理的に保存されている場所から「分離」する必要があります

コードは次のとおりです。

<form action="your_action_url" method="get" >
  <input name="location" type="text" />
  ...
</form>

一方、コントローラーでは

send_file(File.join(params[:location], "image.png"))
于 2012-11-04T21:44:43.803 に答える