我在使用FileUpload时遇到问题,当我从本地计算机选择文件时,它不会带来文件的真实路径,它将使用项目文件的路径并假设我选择的文件在那里,有什么想法吗?
示例: 文件名为“Q.JPG”,位于“C:\”中 当我浏览到“C:\”并选择“Q.JPG”并单击“打开”时,出现以下错误 找不到文件“C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\q.jpg”。 因此,当我启动将文件上传到 FTP 的代码时,它将返回错误,因为文件不存在
HTML 端:
<asp:FileUpload ID="FU" runat="server" Height="24px" />
下面是VB代码:
Protected Sub btnUpload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpload.Click
If FU.PostedFile IsNot Nothing AndAlso FU.PostedFile.FileName <> "" Then
Dim MaxSize As Integer = FU.PostedFile.ContentLength
If MaxSize > "2097152" Then
lblUpload.Text = "The file size cannot exceed 2 MB"
btnSave.Focus()
GoTo 99
End If
'--------------------------
' set up request...
Dim LocFile As String = FU.PostedFile.FileName
Dim clsRequest As System.Net.FtpWebRequest = DirectCast(System.Net.WebRequest.Create("ftp://myftp.com/" & LocFile), System.Net.FtpWebRequest)
clsRequest.Credentials = New System.Net.NetworkCredential("username", "password")
clsRequest.Method = System.Net.WebRequestMethods.Ftp.UploadFile
' read in file...
Dim bFile() As Byte = System.IO.File.ReadAllBytes(FU.PostedFile.FileName)
' upload file...
Dim clsStream As System.IO.Stream = clsRequest.GetRequestStream()
clsStream.Write(bFile, 0, bFile.Length)
clsStream.Close()
clsStream.Dispose()
'--------------------------
lblUpload.Text = "Uploaded"
btnSave.Focus()
Else
lblUpload.Text = "Choose a file to upload"
btnSave.Focus()
End If
99:“什么都不做
End Sub
最佳答案
问题是您尝试将 PostedFile 作为本地文件(在 Web 服务器上)读取,而不是从附加到 FileUploader 的 HttpPostedFile 对象中读取。
尝试:
Dim objFileStream As System.IO.Stream = FU.PostedFile.InputStream
Dim bFile(objFileStream.Length) As Byte
objFileStream.Read(bFile, 0, objFileStream.Length)
关于ASP.NET/VB.NET 文件上传控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5819583/