2

最近、サーバーにファイルをアップロードする必要がある asp のコードを開発しました。私がウェブから見つけたように、ファイルのローカルファイルを表示するには、UploadButton.PostedFile.Filename を実行することで実行できます。

string fileName = UploadButton.PostedFile.Filename;

これにより、ローカル パス全体が表示されます (例: C:\Documents and Settings\christopher.lim\Desktop\HelloWorld.txt)。

これは、デスクトップ (PC がサーバー自体) でコードを実行すると問題なく動作しますが、コードをテスト サーバーに移してデスクトップ (PC はクライアント) で試してみると、ファイルのみが表示されます。パス全体ではなく名前。

例:

string fileName = UploadButton.PostedFile.Filename;

Response.Write("FileName: " + fileName);

1) ローカル PC -> C:\Documents and Settings\christopher.lim\Desktop\HelloWorld.txt

2) テスト サーバー -> HelloWorld.txt

P/S: 私はサーバー クライアントを初めて使用するため、わかりにくい場合は申し訳ありません。私が間違っている場合は修正してください。

4

1 に答える 1

2

MSDNによると-

FileName プロパティが返すファイル名には、クライアント上のファイルのパスは含まれません。

ローカル システムでは完全なパスを取得できることは事実ですが、サーバー上で実行すると、ファイルの名前のみが返されます。

また、参考までに、ファイル アップロード コントロールの動作はブラウザによって異なります。Firefox では、fileupload.postedfile.filename を使用してフル パスではなくファイル名のみを取得する可能性があり、IE では同じことがフル パスを表示する場合があります。

ただし、ファイル名だけで十分なので、クライアント システムからアップロードされたファイルのパスは重要ではありませんが、それでも必要な場合は、Path.GetFileName(filename) MSDN リンクを試してください。

于 2012-11-29T05:50:59.227 に答える