C:³"を解決するには?
<input type="file" id="file-id" name="file_name" onchange="theimage();">
これは私のアップロードボタンです。
<input type="text" name="file_path" id="file-path">
これはファイルのフルパスを表示するためのテキストフィールドです。
function theimage(){
var filename = document.getElementById('file-id').value;
document.getElementById('file-path').value = filename;
alert(filename);
}
これは、私の問題を解決するJavaScriptです。しかし、アラートの値には
C:\fakepath\test.csv
と表示され、Mozillaでは
test.csv
しかし、私はローカルのfully qualified file pathが欲しいのです。この問題を解決する方法を教えてください。
もしこれがブラウザのセキュリティ問題によるものであれば、これを行うための別の方法は何になりますか?
231
3
一部のブラウザには、JavaScriptがファイルのローカルなフルパスを知らないようにするセキュリティ機能があります。クライアントとしては、サーバーにローカルマシンのファイルシステムを知られたくないと思うのは当然のことです。すべてのブラウザがこの機能を備えていればいいのですが...。
私も同じ問題に遭遇しました。IE8では、ファイル入力コントロールの後に隠し入力を作ることで回避することができました。これは前の兄弟の値で埋められます。IE9では同様に修正されています。
フルパスを知りたかった理由は、アップロードする前にjavascriptで画像のプレビューをするためでした。現在は、選択した画像のプレビューを作成するために、ファイルをアップロードする必要があります。
アップロードされたファイルのフルパスを送信する必要がある場合は、署名入りのJavaアプレットのようなものを使用する必要があるでしょう。