2010-11-19 16 views
1

の代わりにファイルファイルを使用しました。FileUpload Web Control。理由を聞かないでくださいが、私はちょうだい!ファイルのHTMLからのコード入力から完全なファイルパスを取得する

HTML:

<input type="file" id="image1" class="listUploadAdd" name="ImageAdd1" /> 

コードの背後にある:私は "C:/Orange.jpg" から閲覧

Dim ImageAdd1 As String = Request.Form("ImageAdd1").ToString() 

をアップロードすると、コードの結果は背後にちょうどイメージですローカルドライブからファイルをアップロードするために必要な完全な "C:/Orange.jpg"ではなく、 "Orange.jpg"という名前を付けてください。

サーバー上にアップロードされるコードの完全なイメージパスをキャプチャする最適な方法は何ですか?

ありがとうございます。

答えて

2

runat="server"を入力要素に追加できますか?もし、runat="server"属性を使用せずに、ファイルをダウンロードするには

Dim filename As string = Request.Files("File1").FileName 

::)そして、それはあなたが元のファイル名とパスをしたい場合は、これを試して

、サーバー上のファイルを保存するために
Request.Files("File1").SaveAs("c:\somedir\yourfile.txt") 

とても簡単です

Dim file = Request.Files("File1") 
Dim buf(file.ContentLength) As Byte 
file.InputStream.Read(buf, 0, file.ContentLength) 
IO.File.WriteAllBytes("C:\somedir\yourfile.txt", buf) 

しかし、あなたは、htmlページでフォーム要素に enctypeを設定する必要があります:これを行うことができます

<form id="yourform" runat="server" enctype="multipart/form-data"> 
+0

私は正しいことをしていません。私はこのエラー "オブジェクトのインスタンスに設定されていないオブジェクト参照"を持っています。 "Dim filename As String = Request.Files(" image1 ")と同じメッセージがあります。FileName" OR "Dim filename As String = Request.Files(" ImageAdd1 ")。FileName"。あなたが言ったのと同じフォーム属性を付けました。本当に不思議。 –

+0

あなたは完全なソースコードを投稿できますか? .aspxファイルとcodebehindファイルの両方。 –

+0

@Michael Shimminsが指摘したように、ファイルがクライアントマシン上のどこに配置されているかは心配するべきではありません。重要なのは、サーバーに保存することを選択した場所です。 –

1

私は「C:/Orange.jpg」から閲覧アップロードすると、背後にあるコードでの結果だけでイメージ名「Orange.jpg」ではなく、完全な「C:/Orange.jpg」でありますローカルドライブからファイルをアップロードする必要があります。

ファイルをクライアントのマシンからプルすることはできません。プログラムを開発する場合、クライアントとサーバーは同じマシンですが、サーバーとクライアントは異なるマシンになります。コードの背後で(サーバー上で)実行すると、C:\ Orange.jpgを開こうとすると、サーバーのハードディスクから開こうとします。このファイルはおそらく存在しません。

Webページからファイルをアップロードすると、そのファイルはPOSTメッセージの一部としてサーバーに送信されます。このファイルはFormコレクションから取得できます。アップローダをASP.NETコントロールに変換するか、runat="server"属性を追加する必要はありません。入力要素を含むフォームを投稿すると、サーバーに送信されます。

ファイルの内容は、フォームにバイト配列として格納されます。このバイト配列をサーバーのハードディスクにファイルとして保存することができます。要約すると

あなたはとにかくそれにアクセスすることはできませんので、あなたは、クライアントマシン上のファイルへのパスを知っている必要はありません。代わりにフォーム送信の一部として送信されたファイルデータを使用して、ファイルのコピーをサーバーに保存します。

関連する問題