Erreur lors du téléchargement gros fichier

First456 Messages postés 33 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 28 janvier 2009 - 14 janv. 2009 à 16:08
First456 Messages postés 33 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 28 janvier 2009 - 15 janv. 2009 à 16:49
Bonjour,

Nous sommes actuellement en train de déployer un plateforme d'échange de fichiers volumineux (jusqu'a 300 Mo). Pour se faire, nous utilisons la méthode response.writefile. (transfert par http et non ftp)
Nous avons etendu :
 - le session.timeout à 120
- maxRequestLength à 1000000
-executionTimeout à 6400

sous IIS
-le delai d'inactivité du pool d'application à 120

Le problème c'est que pour certains téléchargements, les utilisateurs obtiennent des fichiers corrompus.
Je vois à cela plusieurs possibilité :
-> quelquechose à expiré avant la fin du téléchargement du fichier
->perte d'information durant le transfert
-> problème coté client
-> privilégier la méthode response.TransmitFile ?????

Si quelqu'un a été confronté au même problème, ou s'il a des idées n'hesitez pas.

2 réponses

yassinebennani Messages postés 249 Date d'inscription samedi 13 octobre 2007 Statut Membre Dernière intervention 2 mai 2014
15 janv. 2009 à 16:15
Bonjour

Le client reçoit un fichier corrompu et donc ça me fait penser à deux choses soit le client n'a pas reçu la totalité du fichier et pour s'assurer de ça  il faut vérifier la taille du fichier reçu et celle du fichier sur le serveur si c'est pas le cas alors il y'a deux cas

soit la taille du fichier sur le serveur > à la taille du fichier client

conclusion : la fonction writefile et transmit file ne fonctionne pas bien pour les gros fichiers d'après de que je sais par ce que avec un nombre des utilisateurs important qui télécharge ton serveur risque de craquer.

soit la taille du fichier sur le serveur < à la taille du fichier client 

conclusion : le fichier client pusiqu'il est plus grand donc il y'a des choses injectés en plus dans le fichier lors de la transmission.

tu peux essayer ça alors

Response.ClearHeaders();

Response.Clear();

Response.ClearContent();

Response.AddHeader(

"Content-Disposition",
"attachment; filename=" + oFichier.Nom); // ofichier c'est un objet qui représente un fichier

Object oContenu = oFichier.Contenu;

Stream oStream =
new
MemoryStream((
byte[])oContenu);

Byte[] buffer =
new
Byte[oFichier.Contenu.Length];

int byteSeq = oStream.Read(buffer, 0, oFichier.Contenu.Length);

while (byteSeq > 0){

Response.OutputStream.Write(buffer, 0, byteSeq);

byteSeq = oStream.Read(buffer, 0, oFichier.Contenu.Length);

}

Response.End();

Remarque : pour ce genre de platefrom de gestion des documents je te conseil le WebDAV protocol de transfer de  fichier en utilisant le protocol http 

Les fins justifient les moyens_________________________________________________
Yassine BENNANI - Ingénieur en génie logiciel & multimédia (Consultant SI)
0
First456 Messages postés 33 Date d'inscription jeudi 21 décembre 2006 Statut Membre Dernière intervention 28 janvier 2009
15 janv. 2009 à 16:49
Je te remercie pour l'aide,

Actuellement j'ai du mal à avancer parce que le problème n'apparait plus.

Je vais essayer d'obtenir plus d'informations sur le protocole WebDav, c'est peut etre par la que je vais trouver une solution au problème
0