1

我使用文件 HTML 输入而不是FileUpload Web Control。不要问为什么,但我必须!

HTML:

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

后面的代码:

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

我从“C:/Orange.jpg”浏览上传,代码后面的结果只是图像名称“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 元素上设置:

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

我从“C:/Orange.jpg”浏览上传,代码后面的结果只是图像名称“Orange.jpg”,而不是从本地获取文件所需的完整“C:/Orange.jpg”要上传的驱动器。

您将无法从客户端的机器上提取文件。当您开发程序时,客户端和服务器是同一台机器,但当您部署它时,服务器和客户端将是不同的机器。当后面的代码执行时(在服务器上),如果您尝试打开 C:\Orange.jpg,您将尝试从服务器的硬盘上打开它。该文件可能不存在。

当您从网页上传文件时,它将作为 POST 消息的一部分发布到服务器。您可以从 Form 集合中获取文件。您无需将上传程序转换为 ASP.NET 控件,或添加runat="server"属性。只要您发布包含输入元素的表单,它将被提交到服务器。

文件的内容将存储为表单中的字节数组。您可以将此字节数组作为文件保存到服务器硬盘的某个位置。

总之:

您不需要知道客户端计算机上文件的路径,因为您无论如何都无法访问它。使用作为表单提交的一部分发布的文件数据,而不是在服务器上保存文件的副本。

于 2010-11-19T05:16:31.617 回答