1

FileUploadWebControlの代わりにファイルHTML入力を使用しました。理由は聞かないでください、でも私はそうしなければなりません!

HTML:

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

背後にあるコード:

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

「C:/Orange.jpg」からアップロードしてアップロードしたところ、Code Behindの結果は画像名「Orange.jpg」であり、ローカルからファイルを取得するために必要な完全な「C:/Orange.jpg」ではありません。アップロードするドライブ。

サーバーにアップロードするためにコードビハインドから完全なイメージパスをキャプチャするための最良の方法は何ですか?

ありがとうございました。

4

2 に答える 2

2

runat="server"入力要素にを追加できますか?:)そうすれば、ファイルをサーバーに保存するのはとても簡単です。

Request.Files("File1").SaveAs("c:\somedir\yourfile.txt")

元のファイル名とパスが必要な場合は、次のことを試してください。

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

runat="server"属性を使用せずにファイルをダウンロードするには、次のようにします。

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)

ただしenctype、htmlページのフォーム要素にを設定する必要があります。

<form id="yourform" runat="server" enctype="multipart/form-data">
于 2010-11-19T04:39:52.760 に答える
1

「C:/Orange.jpg」からアップロードしてアップロードしたところ、Code Behindの結果は画像名「Orange.jpg」であり、ローカルからファイルを取得するために必要な完全な「C:/Orange.jpg」ではありません。アップロードするドライブ。

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

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

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

要約すれば:

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

于 2010-11-19T05:16:31.617 に答える