2016-04-05 10 views
1

私のモデルにフィールドがありますサイトファイルリンクと呼ばれています。編集フォームには、file_linkのフィールドがあり、フィールドの隣にある[参照]ボタンをクリックすると、ローカルコンピュータのファイルブラウザが表示されます。私は、ファイルを選択して、実際のファイルではなく、ファイルへのユーザーのローカルパスを保存するようにします。例についてはパスのみをアップロードする参照ファイルフィールドを持つ方法

:file_linkは、パスを保存する必要があります:N:プロジェクト\ \ excelfile.xlsx

はどのようにこれを達成することができますか?

+0

ただ、なぜあなたはファイルなしでローカルファイルパスを保存したいと思う不思議? – Sharj

+0

@Sharj私たちのアプリは内部ツールであり、内部ネットワークドライブへのリンクとして機能するフィールドが必要です。 – MoB

答えて

0

あなたがウェブサイトにアクセスすると、何らかの形であなたをハックしない限り、ウェブサイトがあなたのファイルシステムにアクセスする方法はありません。これはRailsサイト特有のものではありません...インターネットの基盤的なセキュリティ予防策です。あなたのユーザのファイルシステムにアクセスしたい場合、あなたの許可を得た後でJavascriptを使ってそれを行うことができるかもしれませんが、容易ではないかもしれません。 Can javascript access a filesystem?

を参照してください。ただし、このアプリケーションをlocalhostでのみ使用する場合は、Rubyを使用してファイルシステムを操作/表示できます。しかし、それはRubyプログラムを実行するファイルシステムに限定されます。

0

あなたを助けることができる宝石はほとんどありません。そのうちの1つはCarriervaweと呼ばれています。

宝石LINK

u = Site.new 
u.file_link = params[:file] # Assign a file like this, or 

# like this 
File.open('somewhere') do |f| 
    u.file_link = f 
end 

u.save! 
u.file_link.url # => '/url/to/file.png' 
u.file_link.current_path # => 'path/to/file.png' 
u.file_link_identifier # => 'file.png' 
+0

これは、クライアントのコンピュータ上のファイルパスではなく、サーバー上のファイルパスを保存しませんか? 'carriervae' gemの – MoB

+1

はどこに保存したいのかを設定することができます。ファイルを一度渡すと、イメージはどこにでも保存され、 'url'をdbに保存します。 – 7urkm3n

+0

@ 7urk3m3nありがとうございますが、私はあなたが私の質問を誤解していると感じています。私はファイルをアップロードしたくありません。アプリケーションとそのサーバーはファイルにアクセスできません。このファイルはすでにネットワークドライブ上に存在しています。保存したいのは、クライアントがファイルブラウザを使って生成したパスだけです。アプリケーション/サーバーによって生成されたパスではありません。だから私はそれを使用した場合、私は 'C:\ Intel \ file.xlsx \'をデータベースに保存します。これはWebサーバーからアクセスできないファイルです。 – MoB

関連する問題