0

よくある質問ですが、答えが見つかりません

入力テキスト ボックス (type=file) と送信ボタンを備えた単純な HTML があります。送信ボタンをクリックすると、ファイルの完全なパスを取得しようとするjs関数を呼び出します

var data = $('#fileName').val();

問題は、アップロードしているファイルの完全なファイル パスを取得していないことです。セキュリティ上の理由から、chrome では が表示されC:\fakePath\filename、firefox ではfileName. しかし、完全なパスが必要な場合はどうすればよいでしょうか?

PS: さらに、ajax 呼び出しを行い、FileReader を使用してそのファイルを読み取るために必要なバックエンドにそのファイル パスを渡します。

4

4 に答える 4

3

完全なパスを取得できません! 仕方がない!!あなたはイントラネット上にいて、十分な権限を持っていますが。

これを回避するにtextareaは、ファイルの完全なパスを入力するようユーザーに依頼します。

于 2013-03-20T04:20:39.250 に答える
1

つまり、サーバー側にロードされたファイルのフルネームを取得することはできません。ファイル名とそのコンテンツをbyte(他の属性の中でも)生の配列に含めるだけです。これはJavaの問題でも、他のサーバー側のテクノロジの問題でもありません。ブラウザの実装に関連しています(ただし、IE6にはこれに関する欠陥が含まれている可能性があります)。

あなたの質問とは直接関係ありませんが、私の注意を引きました

PS:さらに、ajax呼び出しを行い、FileReaderを使用してそのファイルを読み取る必要があるバックエンドへのファイルパスを指定します

通常、セキュリティホールにつながる可能性があるため、ajaxを使用してファイルのアップロードを処理することはできません。それでも、 XMLHttpRequestを使用してファイルを送信できるブラウザ(ChromeやFirefoxなど)がいくつかありますが、一部のブラウザ(IE8-など)では許可されていないため、ファイルをajaxアップロードするにはiframeを使用する必要があります仕事。

これらすべての問題の処理を回避するために、ajaxファイルのアップロードを処理するサードパーティのjsライブラリを使用することをお勧めします。例としては、 Javaサーバー側の例もあるblueimp jQueryファイルのアップロードがあります(免責事項:私はこのプロジェクトで作業しておらず、blueimpとは一切関係がありません)。このプラグインを使用するには、HTML / JavaScript / jQuery / Javaサーバー側に関する中程度の知識が必要であるため、初心者の場合は、動作させるのに時間がかかる場合がありますが、一度動作するとかなり良いです。

于 2013-03-20T04:43:50.900 に答える
0

使用しているテクノロジーはわかりませんが、サーバーにアップロードすると、いつでもファイル名を取得できます(phpまたは.netを使用)

アップロードする手順は次のようになります。

1) ファイルをサーバーにアップロードします (ez /uploadedFiles/...filename 2) アップロードされたパスからファイル名を取得するメソッドを作成します 3) ファイル名をデータベースに挿入するだけです (これにより、フォルダー名を柔軟に変更できます)必要に応じて、今後アップロードされるドキュメントの

通常、ファイル名はそのまま保存されません。将来の名前の競合を避けるため。そのため、ファイル名の後に分と秒を追加して、常にファイル名を変更することをお勧めします。

疑問があれば質問してください。

それが役に立てば幸い。

于 2013-03-20T04:34:31.533 に答える
0

セキュリティ上の理由から、ブラウザは JavaScript でのファイルパス アクセスをブロックします。

サーバーは、ユーザーが自分のコンピューターのどこにファイルを保存しているかを知る必要がなく、アップロード プロセスとは関係がないため、この動作は理にかなっています。

于 2013-03-20T04:37:59.557 に答える