Ich versuche authentifizierten Benutzern Bilder auf den Server über FTP hochladen. Der Code funktioniert größtenteils. Das Problem besteht darin, dass beim Hochladen der Datei ein Problem auftritt. Ich habe versucht ein paar verschiedene Bilder hochzuladen und alle sind größer auf dem Server und daher nicht richtig aufgebaut.VB.NET FTP Bild Upload Fehler
Ein Bild, das ich versuchte, ist 4,56 MB auf meinem Computer und 8.24 MB auf dem Server. Wenn ich das Bild in Photo lade, heißt es: "Wir können diese Datei nicht öffnen." Die Seite befindet sich unter http://troop7bhac.com/pages/slideshowedit.aspx. Der folgende VB.NET-Code hinter dem Upload lautet:
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
Die Dateien werden über ein ASP.NET FileUpload-Steuerelement abgerufen. Das Steuerelement wurde so eingestellt, dass mehrere Dateien gleichzeitig zulässig sind.
Jede Hilfe, um herauszufinden, warum die Bilder nicht korrekt hochgeladen werden, würde sehr geschätzt werden.
EDIT: Ich versuchte Martin Prikryls mögliche doppelte Lösung. Musste es von C# zu VB.NET ändern. Es ging schief. Ich versuchte David Sdots Lösung und es scheiterte auch. Beide Lösungen gaben die gleichen Fehler zurück.
Wenn die Seite auf meinem lokalen Computer ausgeführt wurde, gab sie "C: \ Programme (x86) \ IIS Express \ PictureName.JPG" zurück. Wenn die Seite auf dem Server ausgeführt wurde, wurde "C: \ Windows \ SysWOW64 \ inetsrv \ PictureName.JPG" zurückgegeben. Beide Fehler gehören zur System.IO.FileNotFoundException-Klasse.
Mögliches Duplikat [Zip-Datei nach dem Download vom Server in C# beschädigt zu werden] (http://stackoverflow.com/questions/41357267/zip-file-is-getting-corrupted-after-downloading-from -server-in-c-sharp) –
Wenn Sie immer noch Probleme haben, schreiben Sie [mcve]. Eine einfache Konsolenanwendung, kein ASP. + Ich verstehe den hinzugefügten Abschnitt über Pfade und 'FileNotFoundException' nicht - wie hängt es mit der Frage zusammen? –