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
| public static bool FtpUploadToServer(FileInfo fileInfo, Uri uri, NetworkCredential credentials)
{
try
{
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(uri);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = credentials;
request.UseBinary = true;
// 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.
int buffSize = 2048;
byte[] buffer = new byte[buffSize];
// Variable de mesure de la taille du morceau de fichier lu. Permet d'indiquer que le fichier a été lu et écrit en totalité.
int block;
using (FileStream fs = File.OpenRead(fileInfo.FullName))
{
block = fs.Read(buffer, 0, buffSize);
using (Stream stream = request.GetRequestStream())
{
while (block != 0)
{
stream.Write(buffer, 0, buffSize);
block = fs.Read(buffer, 0, buffSize);
}
}
}
}
catch
{
return false;
}
return true;
} |
Partager