2017-01-20 21 views
-1

私はinput type = fileを使用していますが、私はではなく、を選択してファイルのファイルパスを取得することができます。 のファイル名はです。C#のテキストボックスからファイル名を使用してファイルパスを取得

string path = Path.GetFullPath(appPerfLog.Value); 

私は私のアプリで完全なパスを使用することができるように、私はこの結果を期待していた:

これは私の既存のコードである

C:\Users\myUsername\Desktop\someFolder\Proactive_Hiring_VW101582_Combo_200users_09210316.csv 

しかし、これは私が代わりに得るものです:

C:\Program Files (x86)\IIS Express\Proactive_Hiring_VW101582_Combo_200users_09210316.csv 

フルパスを検索するにはどうすればよいですか私のコンピュータのディレクトリ?私はStreamReaderのためにそれを使用する必要があります。 Google Chromeはセキュリティ上の懸念からfile nameしか返さないため、回避策や代替方法を知る上で助けが必要です。

答えて

2

アップロードされたファイルへのフルパスなど、または少なくとも使用するべきではないものはありません。

ファイルをWebサーバーにアップロードするときに使用するWebフレームワークは、このファイルをメモリまたはディスクの一時ディレクトリに格納し、そこからアプリケーションにストリームとしてアクセスできるようにします一度、またはあなたが選んだディレクトリにそれを保存する方法を使用します。

アプリケーションがWebサーバーにデプロイされた後に、ファイルにクライアント上にあった名前が存在することが保証されないため、実行しようとしていることは起こりません。ご存じの通り、クライアントのD:\Temp\Foo.txtという名前のファイルの名前は、サーバー上でC:\Windows\Temp\asdfg123.tmpとなります。

使用しているWebアプリケーションフレームワークに適切なAPIを使用する必要があります。 ASP.NET FileUploadコントロールの場合、ASP.NETが選択したパスにファイルを書き込ませるには、FileUpload.SaveAs(string filename)を使用する必要があります。その後、filenameを使用してコードからファイルを読み取ることができます。

+0

言い換えれば、 'input type = file'を放棄して、代わりに** FileUpload **コントロールを使用するだけですか?ちょうど説明のために。 @CodeCaster – JPaulPunzalan

+0

いいえ、適切なAPIを使用する必要があると言います。ファイル入力を使うことはできますが、ファイルをどのように処理するかは、最初の読み方によって異なります。これが 'Request.Files []'を介している場合、 'HttpPostedFile'を返します。これには' SaveAs() 'メソッドもあります。 – CodeCaster

+0

明確にするために、私は**ファイルをWebサーバーにアップロードする必要はありません**。 CSVファイルを読み込んでその結果の値を計算するには、完全なパスが必要です。そのための解決法はありますか?ありがとう! – JPaulPunzalan

関連する問題