FAQ ASP.NET/C#
FAQ ASP.NET/C#Consultez toutes les FAQ
Nombre d'auteurs : 39, nombre de questions : 371, dernière mise à jour : 15 juin 2021
On pourra utiliser la méthode suivante :
Sélectionnez
public
static
FileInfo FtpDownload
(
Uri uri,
NetworkCredential credentials,
DirectoryInfo dirInfo)
{
FileInfo fi;
FtpWebRequest request =
(
FtpWebRequest)WebRequest.
Create
(
uri);
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.
byte
[]
buffer =
new
byte
[
2048
];
// 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
(
FtpWebResponse res =
(
FtpWebResponse)request.
GetResponse
(
))
{
fi =
new
FileInfo
(
string
.
Concat
(
dirInfo.
FullName,
uri.
Segments[
uri.
Segments.
Length -
1
]
));
using
(
BinaryReader stream =
new
BinaryReader
(
res.
GetResponseStream
(
)))
{
using
(
FileStream fs =
File.
Create
(
fi.
FullName,
buffer.
Length,
FileOptions.
WriteThrough))
{
// Ecriture du flux dans le fichier block par block
int
block;
while
((
block =
stream.
Read
(
buffer,
0
,
buffer.
Length)) >
0
)
{
fs.
Write
(
buffer,
0
,
block);
}
}
}
}
return
fi;
}
public
static
void
TestFtpDownload
(
)
{
// exemple d'utilisation
FtpDownload
(
new
Uri
(
"ftp://hd1.freebox.fr/Disque dur/Enregistrements/test.txt"
),
new
NetworkCredential
(
"freebox"
,
"000000"
),
new
DirectoryInfo
(
@"C:\temp\"
));
}
Créé le 20 septembre 2009 par Immobilis
On pourra utiliser la méthode suivante :
Sélectionnez
public
static
bool
FtpUpload
(
Uri uri,
NetworkCredential credentials,
FileInfo fileInfo)
{
FtpWebRequest request =
(
FtpWebRequest)FtpWebRequest.
Create
(
Path.
Combine
(
uri.
AbsoluteUri,
fileInfo.
Name));
request.
Method =
WebRequestMethods.
Ftp.
UploadFile;
request.
Credentials =
credentials;
request.
UseBinary =
true
;
request.
KeepAlive =
false
;
request.
UsePassive =
true
;
byte
[]
buffer =
new
byte
[
2048
];
using
(
Stream stream =
request.
GetRequestStream
(
))
{
using
(
FileStream fs =
File.
OpenRead
(
fileInfo.
FullName))
{
int
block;
while
((
block =
fs.
Read
(
buffer,
0
,
buffer.
Length)) >
0
)
{
stream.
Write
(
buffer,
0
,
block);
}
}
}
return
true
;
}
public
static
void
TestFtpUpload
(
)
{
// exemple d'utilisation
FtpUpload
(
new
Uri
(
"ftp://hd1.freebox.fr/Disque dur/Enregistrements/"
),
new
NetworkCredential
(
"freebox"
,
"000000"
),
new
FileInfo
(
@"C:\temp\test.txt"
));
}
Créé le 20 septembre 2009 par Immobilis