0

ストリームライターで問題が発生する

ログインビューにFileUploaderがあり、使用しているWebページにアクセスできます。

var fileuploader = (FileUpload)LoginView.FindControl("FileUploader");
string filepath =  System.IO.Path.GetFullPath(fileuploader.FileName.ToString());

次に、そのデータを(別のクラスにある)ストリームリーダーに渡します。

 using (StreamReader reader = File.OpenText(filename))

渡されるファイルパスは、C:\ Program Files(x86)\ Common Files \ Microsoft Shared \ DevServer \ 10.0\sample.txtです。

C:\ fasta\sample.txtから選択している場所

私はこれについていくつかの投稿を見ましたが、asp.netアプリケーションについてはそうではありません。ありがとう!

4

3 に答える 3

2

FileUploadクラスを使用すると、クライアントはファイルをアップロード/選択できます。したがって、取得できるのはclientPathだけです。そのような道はあなたにとって必要ではないでしょう!したがって、できることは、fileUpload.FileNameプロパティを使用して、それを他のパスと組み合わせることです。

var fileuploader = (FileUpload)LoginView.FindControl("FileUploader");
string filepath =  Path.Combine(Server.MapPath("."), fileuploader.FileName);
fileuploader.SaveAs(filePath); // will save the selected file on your server

Server.MapPath(..)は、(サーバーの)仮想パスをサーバーの実際のパスにマップします。で呼び出すと、"."この呼び出しによってwebApplicationルートディレクトリが返されます。とにかく、それらを保存する場所にファイルをアップロードするときは、非常に注意する必要があります!最悪の場合、誰かが潜在的に危険なファイル(たとえば、.aspx拡張子)をアップロードし、サーバー上でコードを実行する可能性があります。

さらに、サーバーからクライアントのファイルに直接アクセスする必要はなく、その方法もありません。これらのアイテムは、HTTPリクエスト内でのみ取得できます。したがって、selectedFileはすでにリクエストに含まれており、サーバーのハードディスクに直接保存できます。

于 2012-09-06T18:23:35.150 に答える
1

FileUpload コントロール (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.saveas.aspx) で SaveAs メソッドを使用することをお勧めします。

ファイルは実際にアップロードされたものであり、Web サイトからクライアント マシン上の場所を気にする必要はないことを忘れないでください (たまたま、サーバーとクライアントが同じマシンであるということです)。 . ファイルを別のマシンからサイトにアップロードした場合、Web サーバーはクライアントのパスにあるリソースにアクセスできません。FileUpload コントロールにはファイルが用意されているので、ファイルを取得し、必要な場所に配置するだけで、そのファイルにアクセスして、必要なことを行うことができます。

崖: リソースへのクライアント パスを取得しても、サーバーがアクセスできない別のマシン上にあるため、サーバーはそれを使用して何もできません。

于 2012-09-06T18:28:51.583 に答える
1

ファイルをアップロードしたい場合:

.aspx

...
<asp:FileUpLoad id="FileUpLoad1" runat="server" />
...

コードビハインド

...
if (FileUpLoad1.HasFile)
{
    FileUpLoad1.SaveAs(@"C:\temp\" + FileUpLoad1.FileName);
}
else
{
   // No file uploaded
}
...

クライアントがブラウザ コントロールで設定したファイル パスが必要な場合は、次のように入力します。

できません。セキュリティ上の理由から、ブラウザはファイルの完全なパスを投稿しません。

于 2012-09-06T18:42:16.910 に答える