2009-08-19 14 views
1

theFile(ASP.NET)という単純なFileUploadコントロールを使用してファイルをアップロードしています。私はファイルの絶対パスを取得しようとしていますが、thefile.PostedFile.FileNamethefile.FileNameはまったく同じですが、ファイル名だけでパスはありません!このファイルを別のサーバーに保存するため(Webサービス経由でバイト配列経由で転送)、Server.MapPathを使用できません。アップロードするファイルの絶対パスを取得する

それはこのラインで壊し:それは、ファイル名を取り、私のVSの相対パスにマッピングされているため

Dim fStream As New FileStream(thefile.FileName, FileMode.Open, FileAccess.Read) 

!私は絶対パスが必要です...

+0

どのバージョンの.netフレームワークを使用していますか? – adatapost

+0

基本的に、私はファイルのパスが人がアップロードしようとしていることを知りたいので、それを取ってそれからファイルストリームを作成することができます – Jason

+0

enctype = multipart/form-dataとpostメソッドがあるHTMLフォームは責任があります(ファイルではなく)ファイルの内容をアップロードします。 – adatapost

答えて

5

HTTPを介してアップロードされたファイルには、リモート(クライアント)マシンの絶対パスは含まれません。そのディレクトリ構造についての情報を提供する可能性があります。したがって、FileUpload WebコントロールのFileContentプロパティを参照してください。セキュリティリスクとみなされます。さらに、それはどんな使い方ですか?誰かがインターネット経由でファイルをアップロードしている場合、ローカル(asp.netサーバ)マシン上のファイルストリームを自分のマシン上のパスにオープンしようとするのはなぜですか?

実際にアップロードされたファイルは、要求の一部としてバイトストリームとして送信されます。コントロールのFileBytesプロパティにアクセスしてファイルを取得するか、SaveAs()メソッドを呼び出してサーバーに保存する必要があります。あなたの場合、おそらくバイトを取得し、必要なWebサービス呼び出しにそれらを送信するだけです。

+0

私は取得しようとしているファイルのパスを知らずにファイルストリームを作成するにはどうすればよいですか? – Jason

+0

あなたは少し混乱していると思います。アップロードされたファイルは、HTTP要求の一部としてバイトストリームとして存在します。このバイトストリームとファイルシステム上のファイルは、ディスクに保存するまでは関係ありません。 – womp

+0

@ Jason:Hadiが述べたように、FileContentプロパティを使用して、アップロードされたファイルの基本ストリームを使用します。 – shahkalpesh

1

(Webサービス経由でバイト配列経由で転送)。

現在、ファイルバイト配列が必要なので、ファイルのバイト配列にtheFile.FileBytesプロパティを使用してアクセスしてください。ここで

はのFileUpload WebコントロールのFileBytesプロパティへの参照です:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.filebytes.aspx

あなたが直接ストリームオブジェクトにアクセスしたい場合、あなたは含むFileContentプロパティを利用することができます。 http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.fileupload.filecontent.aspx

関連する問題