C'est un bien étrange code pour uploader un fichier zip par ftp...
Voilà un exemple tiré de la MSDN : How to: Upload Files with FTP
C'est en anglais et en C#, mais ça donne une bonne idée de la chose.
J'ai traduit le code en VB.NET via un convertisseur automatique et voilà ce que ça donne :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| ' Get the object used to communicate with the server.
Dim request As FtpWebRequest = DirectCast(WebRequest.Create("ftp://www.contoso.com/test.htm"), FtpWebRequest)
request.Method = WebRequestMethods.Ftp.UploadFile
' This example assumes the FTP site uses anonymous logon.
request.Credentials = New NetworkCredential("anonymous", "janeDoe@contoso.com")
' Copy the contents of the file to the request stream.
Dim sourceStream As New StreamReader("testfile.txt")
Dim fileContents As Byte() = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd())
sourceStream.Close()
request.ContentLength = fileContents.Length
Dim requestStream As Stream = request.GetRequestStream()
requestStream.Write(fileContents, 0, fileContents.Length)
requestStream.Close()
Dim response As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription)
response.Close() |
Par contre, j'ai vu aussi que ça ne fonctionne que pour un fichier texte.
Pour un fichier zip, il faut remplacer :
1 2
| Dim sourceStream As New StreamReader("testfile.txt")
Dim fileContents As Byte() = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()) |
Par :
Dim fileContents As Byte() = File.ReadAllBytes("testfile.zip")
Mais je vois que ça tu le fais déjà, donc c'est bien.
D'autre part, pour des fichiers volumineux, il vaut mieux streamer l'upload :
1 2 3 4 5
| Using requestStream = request.GetRequestStream()
Using input = File.OpenRead("testfile.zip")
input.CopyTo(requestStream)
End Using
End Using |
Enfin, je confirme que les Close après le Return ne sont pas exécutés.
Pour tout ce qui est IDisposable, il vaut mieux utiliser l'instruction Using qui permet de libérer les ressources, même en cas d'exception.
Partager