我试图让认证用户通过FTP上传图片到服务器。代码大部分适用。不是的部分是上传文件时出现问题。我试图上传一些不同的图片,并且它们都在服务器上较大,因此没有正确构建。VB.NET FTP图片上传错误
我试过的一张照片是我的电脑上的4.56MB和服务器上的8.24MB。当我在照片中加载图片时,它指出“我们无法打开此文件。”页面位置在http://troop7bhac.com/pages/slideshowedit.aspx。以下是上传后面的VB.NET代码:
Sub uploadFile_Click(sender As Object, e As EventArgs)
lblUploadErrors.InnerHtml = ""
If (lstSlideshowChoose.SelectedValue = "") Then
lblUploadErrors.InnerHtml = "<p>A slideshow must be selected.</p>"
Else
If (FileUpload1.HasFile) Then
Dim nameList() As String
Dim successList() As String
Dim i As Integer = 0
For Each file As HttpPostedFile In FileUpload1.PostedFiles
Dim fileBytes() As Byte = Nothing
Dim fileName As String = Path.GetFileName(file.FileName)
Dim photoRE As New Regex("^[A-z0-9 _]{1,}\.jpg|JPG|jpeg|JPEG|png|PNG+$")
Dim photoSuccess As Boolean = photoRE.Match(fileName).Success
ReDim Preserve nameList(i)
ReDim Preserve successList(i)
If (photoSuccess = True) Then
Using fileStream As New StreamReader(file.InputStream)
fileBytes = Encoding.UTF8.GetBytes(fileStream.ReadToEnd())
fileStream.Close()
End Using
Try
Dim request As FtpWebRequest = DirectCast(WebRequest.Create(ftpPath & lstSlideshowChoose.SelectedValue & "/" & fileName), FtpWebRequest)
request.Method = WebRequestMethods.Ftp.UploadFile
request.Credentials = New NetworkCredential(ftpUser, ftpPass)
Using uploadStream As Stream = request.GetRequestStream()
uploadStream.Write(fileBytes, 0, fileBytes.Length)
uploadStream.Close()
End Using
Dim response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
response.Close()
successList(i) = "Success "
Catch ex As Exception
successList(i) = "Failed "
End Try
Else
successList(i) = "Failed "
End If
nameList(i) = fileName
i += 1
Next
For x As Integer = 0 To nameList.Count - 1
lblUploadErrors.InnerHtml += "<p>" & successList(x) & nameList(x) & "</p>"
Next
Else
lblUploadErrors.InnerHtml = "<p>You have not selected a picture to upload.</p>"
End If
End If
End Sub
这些文件是通过ASP.NET FileUpload控件获取的。该控件已设置为一次允许多个文件。
任何帮助找出为什么照片不能正确上传将不胜感激。
编辑:我试过Martin Prikryl的可能的重复解决方案。必须将其从C#更改为VB.NET。它失败了。我尝试了David Sdot的解决方案,但也失败了。两种解决方案都返回相同的错误
如果页面在我的本地机器上运行,它将返回“C:\ Program Files(x86)\ IIS Express \ PictureName.JPG”。如果该页面在服务器上运行,则返回“C:\ Windows \ SysWOW64 \ inetsrv \ PictureName.JPG”。这两个错误都是System.IO.FileNotFoundException类。
的可能的复制[Zip文件越来越在C#从服务器上下载后损坏(http://stackoverflow.com/questions/41357267/zip-file-is-getting-corrupted-after-downloading-from -server-in-c-sharp) –
如果仍有问题,请发表[mcve]。一个简单的控制台应用程序,无ASP。 +我不明白关于路径和'FileNotFoundException'的附加部分 - 它与问题有什么关系? –