J'ai un dossier distant avec n fichiers et j'ai besoin de copier le contenu dans un autre fichier distant. Je suppose que cela peut être fait par des flux, ce qui est ce que j'ai essayé:copier plusieurs fichiers distants vers un autre fichier distant via HttpWebRequest C#
WebRequest destRequest = WebRequest.Create(destFile);
destRequest.Method = "PUT";
destRequest.Headers.Add("x-ms-blob-type", "BlockBlob"); //just an example with Azure blob, doesn't matter
using (Stream destStream = destRequest.GetRequestStream())
{
string sourceName = "mysourcefolder";
int blockSize = 8388608; //all the files have the same lenght, except one (sometimes)
for (int i = 0; i < n; i++)
{
string source = sourceName + i;
WebRequest sourceRequest = WebRequest.Create(source);
destRequest.Method = "GET";
HttpWebResponse destResp = (HttpWebResponse)destRequest.GetResponse();
using (Stream sourceStream = destResp.GetResponseStream())
{
sourceStream.CopyTo(destStream, blockSize);
}
}
Console.Write("ok");
}
}
catch (Exception e)
{
Console.Write("nope !");
}
Il y a plusieurs problèmes dans mon code:
1) Je dois préciser la longueur dans ma demande de PUT. Probablement c'est blockSize*n
puisque je n'ai aucune exception à ce sujet;
2) Si tel est le cas, j'ai toujours l'exception Cannot close stream until all bytes are written
. Qu'est-ce que ça veut dire?
Je Gess votre demande devient le temps essayez de régler 'destRequest.Timeout,' ' destRequest.ReadWriteTimeout,' –