8
votes

Télécharger de grands fichiers (1 Go) -asp.net

J'ai besoin de télécharger de gros fichiers d'au moins 1 Go taille du fichier. J'utilise asp.net , c # et IIS 5.1 comme plate-forme de développement.

J'utilise: xxx

avant d'utiliser: xxx

(ne va pas ici mais donne Système .OUTOfMemoryException Exception)

J'ai actuellement défini le httpruntime à:

exécutionTimeout = " 999999 " maxrequestlength = " 2097151 " (c'est 2 Go!) utiliquement requalifalifedreicturl = "vrai" minfreethreads = "8" minlocalrequestfreethreads = "4" AppequesqueaulImit = "5000" Enferversionheader = "vrai" DemandeLengthReshold = "8192"

J'ai aussi défini maxallowedContenTlength = "** 2097151 **" (suppose que c'est seulement pour IIS7)

J'ai changé IIS Délai de connexion à 999 999 secs aussi.

Je suis incapable de télécharger des fichiers de même 4578KB (ajaz-uploader.zip)


0 commentaires

8 Réponses :


1
votes

Essayez de copier sans charger tout ce qui se passe dans la mémoire: xxx


1 commentaires

Bonjour Manitra, j'ai essayé d'utiliser les fonctions CopyFile () dans le client et copiez () dans le serveur, mais j'ai eu des erreurs. Une dernière chose que j'ai observée, c'est que WriteAllbytes fonctionnera jusqu'à 3 Mo de données, plus que celui qu'il donne "System.Web.Services.protocols.SoapException: System.Web.Services.protocols.SoapException: Il y avait une exception à exécuter les extensions spécifiées Dans le fichier de configuration. ---> System.web.httpException: la longueur maximale de la demande dépassée ..... "Exception.



0
votes

vérifier Cette entrée de blog sur les grands téléchargements de fichiers. Il dispose également de quelques liens avec des forums de discussion qui peuvent également éclairer cela. La suggestion est d'utiliser HTTPHANDLLER personnalisé pour ce contrôle de Flash / Silverlight personnalisé.


0 commentaires

4
votes

J'ai googlé et trouvé - Neetupload


Une autre solution serait de lire le octets sur le client et envoyez-le sur le serveur, le serveur enregistre le fichier. Exemple p>

serveur: dans l'espace de noms - Uploader, classe - Télécharger P>

string filename = "C:\..\file.abc";
Uploader.Upload up = new Uploader.Upload();
FileStream  fs = File.Create(fileName); 
BinaryReader br = new BinaryReader(fs);

// Read all the bytes
Byte[] data = br.ReadBytes();
up.Write(filename,data);


3 commentaires

Je n'ai pas vérifié le code. Je ne suis pas sûr que cela fonctionne, je voulais juste transmettre l'idée. C'est presque ce que FTP fait, sauf que, au lieu du port 20/21, tout se passe sur le port 80.


Wow! Je suis tellement content que vous ayez mentionné Neatupload. J'ai pris une copie pour moi-même et j'ai fait le téléchargement si facile pour moi d'ajouter à mon projet. Merci.


Je sors d'exception de mémoire à Br.Readbytes (). Taille du fichier ~ 700 Mo



0
votes

pour IIS 6.0 Vous pouvez modifier ASPMaxentityLallyAllowed dans Metabase.xml, mais je ne pense pas que ce soit aussi simple dans IIS 5.1.

Ce lien peut aider, espérons qu'il fait:

http://itonlinesolutions.com/phpbb3/viewtopic.php?f = 3 & T = 63


0 commentaires

0
votes

Je pense que vous devez utiliser la réponse.TransMitFile, cette méthode ne se charge pas dans la mémoire Web Server le fichier, il diffuse le fichier sans utiliser les ressources du serveur Web. xxx


2 commentaires

Ne pas ouvrir le fichier en mémoire, vous supprimerez le serveur !! Avec tout le respect, toutes les autres solutions postées semblent fonctionner avec de petits fichiers, mais pas avec des fichiers 1GiG


Cette méthode peut être utilisée à l'envers, pour télécharger ou télécharger de gros fichiers, permettez-moi de voir si je peux trouver les docs



9
votes

Nous avons une application qui doit parfois télécharger des fichiers 1 et 2 Go, ainsi de suite dans cela. Après de nombreuses recherches, ma conclusion est que nous devons mettre en œuvre le Neetupload ou quelque chose comme ça.

Aussi, soyez conscient que xxx

est mesuré dans octets , tandis que xxx

est mesurée dans kilo-octets . Donc, vos valeurs devraient ressembler davantage à ceci: xxx


0 commentaires

0
votes

Réglage de la maxeQuestLength doit être suffisant pour le téléchargement de fichiers supérieurs à 4 Mo, la limite par défaut pour la taille de la demande HTTP. Veuillez vous assurer que rien ne remplace votre fichier de configuration.

Alternativement vous pouvez vérifier le Téléchargement ASYNC fourni par Telerik , qui télécharge des fichiers par 2 Mo de morceaux et peut efficacement contourner la limitation de la taille de la demande ASP.NET.


0 commentaires

4
votes

Je sais que c'est une ancienne question, mais toujours sans réponse.

C'est ce que vous devez faire:

dans votre fichier web.config, ajoutez ceci dans: < Pré> xxx

et ceci sous xxx

vous voyez dans le commentaire comment cela fonctionne. En un, vous devez avoir le SIE en octets et dans l'autre en kilo-octets. J'espère que cela pourra aider.


1 commentaires

Mais cela ne fonctionne pas dans mon cas. Pouvez-vous s'il vous plaît élaborer comment le faire fonctionner. Tia