1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
| Public Shared Function FtpDownload(ByVal uri As Uri, ByVal credentials As NetworkCredential, ByVal dirInfo As DirectoryInfo) As FileInfo
Dim fi As FileInfo
Dim request As FtpWebRequest = DirectCast(WebRequest.Create(uri), FtpWebRequest)
request.Credentials = credentials
request.UseBinary = True
request.Method = WebRequestMethods.Ftp.DownloadFile
'Utilisé pour envoyer la commande "QUIT" au serveur afin de fermer correctement la connexion'
request.KeepAlive = False
' Taille du tableau servant à stocker les morceaux du fichier.'
' On épargne ainsi les ressources du serveur en ne chargeant pas la totalité du fichier.'
' Cela permet de transférer rapidement des fichiers volumineux.'
Dim buffer As Byte() = New Byte(2047) {}
' Variable de mesure de la taille du morceau de fichier lu. Permet d indiquer que le fichier a été lu et écrit en totalité.'
' Recupération de la réponse'
Using res As FtpWebResponse = DirectCast(request.GetResponse(), FtpWebResponse)
fi = New FileInfo(String.Concat(dirInfo.FullName, uri.Segments(uri.Segments.Length - 1)))
Using stream As New BinaryReader(res.GetResponseStream())
Using fs As FileStream = File.Create(fi.FullName, buffer.Length, FileOptions.WriteThrough)
' Ecriture du flux dans le fichier block' par block
Dim block As Integer
While ((block = stream.Read(buffer, 0, buffer.Length)) > 0)
fs.Write(buffer, 0, block)
End While
End Using
End Using
End Using
Return fi
End Function
Public Shared Sub TestFtpDownload(ByVal sender As Object, ByVal e As System.EventArgs)
' exemple d utilisation'
FtpDownload(New Uri("ftp:/192.168.1.*/inetpub/wwwroot/MonFichier.xml"), New NetworkCredential("***", "***"), New DirectoryInfo("C:\Inetpub\wwwroot\"))
End Sub
Public Class MonMetier
Public Property Code() As [String]
Get
Return m_Code
End Get
Set
m_Code = Value
End Set
End Property
Private m_Code As [String]
Public Property Mobile() As String
Get
Return m_Mobile
End Get
Set
m_Mobile = Value
End Set
End Property
Private m_Mobile As String
Public Property Status() As Integer
Get
Return m_Status
End Get
Set
m_Status = Value
End Set
End Property
Private m_Status As Integer
Public Property IPFee() As Double
Get
Return m_IPFee
End Get
Set
m_IPFee = Value
End Set
End Property
Private m_IPFee As Double
End Class
sub Page_load(ByVal sender As Object, ByVal e As System.EventArgs)
' Creation de la liste d objets'
Dim metiers As New List(Of MonMetier)()
Dim metier As MonMetier = New MonMetier()
'Initialisation'
metier.Code = " "
metier.Mobile = " "
metier.Status = 10000
metier.IPFee = 0.0000
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
metiers.Add(metier)
' Creation du serialiseur qui va transformer la liste d objets en Xml'
Dim serializer As New XmlSerializer(GetType(List(Of MonMetier)))
' Ouverture d un espace mémoire pour stocker le flux Xml'
Using mem As New MemoryStream()
' Mise en mémoire de la sérialisation de la liste d étudiants'
serializer.Serialize(mem, metiers)
' Creation du fichier
Using fs As New FileStream("C:\InetPub\wwwroot\MonFichier.xml", FileMode.Create)
' Creation d un flux pour écrire dans le fichier'
Using sw As New StreamWriter(fs, Encoding.UTF8)
' Ecriture du contenu de la mémoire dans le fichier (la mémoire contient le flux Xml)'
sw.Write(Encoding.UTF8.GetString(mem.ToArray()))
End Using
End Using
End Using
end sub |
Partager