2010-12-15 53 views
1

J'utilise asp: fileupload contrôle pour télécharger mes fichiers image. Donc, l'utilisateur clique sur parcourir et sélectionnez le fichier et cliquez sur télécharger et dans le gestionnaire d'événements du bouton de téléchargement il ya FileUpload.PostedFile.SaveAs() etcEssayez d'utiliser File.SAVEAS mais obtenez erreur 404, parce que la taille est grande

Tout fonctionne bien. Accepter quand pour une grande taille de fichier. par exemple. J'ai un fichier (jpg) 5,5 Mo. Quand j'essaye de télécharger ce dossier j'obtiens l'erreur ci-dessous. La chose étrange est que je le bouton uploader eventhandler de fichier je vérifie la taille du fichier. If (intFileesize < intFileSizeLimit) etc

Mais l'étrange thig est que je supprime tout le code dans Uploadhandler eventler pour tester/déboguer et je reçois toujours l'erreur ci-dessous. L'erreur se produit donc en dehors du gestionnaire de bouton. Je veux dire la cause de l'erreur n'est pas Fileupload.SAveAs etc .... Alors la question est comment puis-je éviter cela. Je veux dire que j'ai construit une restriction de 1 Mo, mais ce code n'est pas atteint.

Je n'ai aucun problème avec les petites tailles, par ex. Je pourrais télécharger 400 ko sans problème.

Donc, la question est de savoir quelle est la cause de la taille du gros fichier comment puis-je résoudre ce problème?

Autre question: Existe-t-il un outil ou quoi que ce soit pour rogner la taille du fichier et le télécharger? Je veux dire, même si ils téléchargent 6 mb image, je devrais recadrer à 50ko ou quoi que ce soit lors du téléchargement. Comment approcher ça? peut-être un logiciel gratuit tiers?

erreur que je reçois au bout de 2-3 secondes

Oops! Cette page semble cassée. HTTP 404 - Fichier introuvable.

Répondre

0
+0

J'ai vérifié mon web.config -> maxRequestLength = "32768" – ethem

+0

Je viens d'essayer sur le serveur IIS elle-même et l'erreur est comme ceci: Résumé d'erreur Erreur HTTP 404.13 - introuvable Le module de filtrage des demandes est configuré pour refuser une demande qui dépasse la longueur du contenu de la demande.
• Le filtrage des demandes est configuré sur le serveur Web pour refuser la demande car la longueur du contenu dépasse la valeur configurée.
• Vérifiez le paramètre configuration/system.webServer/security/requestFiltering/[email protected] dans le fichier applicationhost.config ou web.config. – ethem

+0

Je viens de déposer et de glisser à nouveau le code dans web.config, mais la bonne chose est que je n'ai plus l'erreur 404 ... Donc c'est une bonne chose. La mauvaise chose est qu'il ne télécharge pas le fichier. Les petites tailles sont toujours téléchargées. – ethem

0

La taille de la requête par défaut est probablement atteint. Par défaut, je crois qu'ASP.NET supporte une limite de taille de requête de 4 Mo. Vous pouvez le modifier dans votre configuration:

<system.web> 
    <httpRuntime executionTimeout="240" maxRequestLength="20480" /> 
</system.web> 

L'exemple ci-dessus modifie la taille de la requête à 20 Mo. La chose à prendre en compte est que HTTP n'a jamais été vraiment conçu pour gérer de gros téléchargements de fichiers. Vous voudrez peut-être envisager d'utiliser une solution de rechange, comme un contrôle de téléchargement Flash ...

MISE À JOUR

Pour IIS7 vous devrez peut-être mettre à jour la configuration dans la section system.webServer:

<system.webServer> 
    <security> 
     <requestFiltering> 
      <requestLimits maxAllowedContentLength="20480" /> 

IIS utilise le même système de configuration que ASP.NET, mais comme il ne s'agit pas d'un gestionnaire ASP.NET appelé, il dispose d'un paramètre supplémentaire pour les autres demandes de contenu.

+0

J'ai vérifié mon web.config et ses 32 mb comme ceci () – ethem

+0

Je viens d'essayer sur le serveur IIS lui-même et l'erreur est comme ceci: Résumé de l'erreur Erreur HTTP 404.13 - introuvable Le module de filtrage des demandes est configuré pour refuser une demande qui dépasse la longueur du contenu de la demande.
• Le filtrage des demandes est configuré sur le serveur Web pour refuser la demande car la longueur du contenu dépasse la valeur configurée.
• Vérifiez le paramètre configuration/system.webServer/security/requestFiltering/[email protected] dans le fichier applicationhost.config ou web.config. – ethem

+0

Voir la mise à jour. –

0

Étant donné que vous avez déjà défini maxRequestLength dans la balise <httpRuntime> du fichier web.config, il semble que vous atteigniez le filtre de requête IIS7.

Essayez d'ajouter ceci à votre site Web.config:

<security> 
    <requestFiltering> 
     <requestLimits maxAllowedContentLength="33554432"/> 
    </requestFiltering> 
</security> 

Selon la façon dont votre serveur est configuré, vous pouvez aussi avoir besoin de modifier la configuration IIS pour vous permettre de configurer le filtrage de la demande au niveau de l'application plutôt que le niveau de la machine. Modifier %windir%\system32\inetsrv\config\applicationHost.config et changement:

<section name="requestFiltering" overrideModeDefault="Deny" /> 

Pour:

<section name="requestFiltering" overrideModeDefault="Allow" /> 
+0

Je viens de déposer et de glisser à nouveau le code dans web.config, la bonne chose est que je ne fais plus erreur (404) etc. L'écran scintille juste une fois ... Donc c'est une bonne chose. La mauvaise chose est qu'il ne télécharge pas le fichier. Les petites tailles sont toujours téléchargées. J'ai changé le requestfiltering de Deny à Allow. les résultats sont les mêmes .... – ethem

+0

Si vous n'obtenez plus 404, il est probable que ce soit un problème avec le code. Pourriez-vous poster un exemple de code? –