First456
Messages postés33Date d'inscriptionjeudi 21 décembre 2006StatutMembreDernière intervention28 janvier 2009
-
14 janv. 2009 à 16:08
First456
Messages postés33Date d'inscriptionjeudi 21 décembre 2006StatutMembreDernière intervention28 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.
yassinebennani
Messages postés249Date d'inscriptionsamedi 13 octobre 2007StatutMembreDerniè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);
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)