12
votes

Téléchargement de fichier dans ASP.NET MVC 4 RAZOR

J'utilise asp .NET MVC 4.0 et vs10 . Je suis une nouvelle application Web.

J'ai conçu une page avec la vue HTML Razor. Voici un certain code de index.cshtml : xxx

J'essaie de télécharger un fichier Excel dans namebnupload Cliquez sur l'événement. En cliquant sur ce bouton, nous vous trouverons dans cette page, juste une boîte de dialogue de téléchargement de fichier ouvrira et sélectionnera le fichier, l'emplacement du fichier figurera dans le nom NameTextFilename Texte de texte.

Modifier 1:

J'ai écrit du code à partir du code suggéré: xxx

mais cela montre la suivante:

Erreur de serveur dans '/' Application.

La ressource est introuvable. Description : http 404 . La ressource que vous recherchez (ou l'une de ses dépendances) aurait pu être supprimée, avait-elle changé son nom, ou est temporairement indisponible. Veuillez consulter l'URL suivante et vous assurer qu'il est orthographié correctement.

URL demandée: /


2 commentaires

Avez-vous configuré le routage dans votre routine?


Voici un lien en ligne qui pourrait vous aider ( Stackoverflow.com/ Questions / 15680629 / MVC-4-RAZOR-FILE-UPLOA D ).


4 Réponses :


4
votes

En cliquant sur la touche [THE UPLOAD], nous vous trouverons dans cette page, une boîte de dialogue de téléchargement de fichier s'ouvrira et la sélection du fichier, l'emplacement du fichier figurera dans la zone de texte NameTextFilename.

Ce n'est pas possible car un élément de téléchargement de fichier n'est plus accessible de manière programmatique. "De retour dans les jours", et des sites malveillants ont mis en silence des informations sensibles en définissant la valeur du contrôle de téléchargement de fichier vers des emplacements de fichiers de mot de passe bien connus, etc.

Vous devrez simplement mettre un sur votre formulaire et gérer le transfert de téléchargement, comme suggéré dans le lien de la réponse @Bretts.


2 commentaires

Je dois rediriger vers une autre page? par action = "" et méthode = "post"?


Juste pour savoir, le fichier de type d'entrée doit avoir un attribut de nom, le fichier n'a pas été téléchargé (testé sur chrome).



10
votes

Phil HAACK montre comment gérer les téléchargements de fichiers avec son poteau de blog Téléchargement d'un fichier (ou de fichiers) avec ASP.NET MVC .

Il y a tout à fait de choses que vous manquez alors de lire ce poste vous permettra de mieux que toute réponse ici.

** Mise à jour pour Edition 1 **

Quelques numéros

  1. - ceci doit être
  2. Vous avez plusieurs balises de formulaire imbriquées. Vous pouvez avoir plusieurs tags de formulaire, mais ils ne peuvent pas être imbriqués. Dans votre cas, votre seul besoin. La plupart du temps, vous n'avez besoin que de 1.
  3. devrait être

    Il est plus classique d'utiliser @uduil (html.beginform (Form ()) par opposition à des balises de formulaire d'écriture manuelle. Voir ci-dessous. xxx


1 commentaires

J'ai lu ceci. Mais face à un problème. Ici, ma question a été modifiée. S'il vous plaît, jetez un oeil.



1
votes

Définissez le nom du contrôle de fichier dans la classe du contrôleur. Par exemple, dans le code ci-dessus

public ActionResult Index(HttpPostedFileBase NAMEbtnUpload)


0 commentaires

14
votes

Essayez d'ajouter l'attribut "ENCTYPE" à votre formulaire.

@using (Html.BeginForm("ACTION", "CONTROLLER", FormMethod.Post, new { EncType="multipart/form-data"})){
  //FORM MARKUP HERE
}


1 commentaires

Que ressemblerait-il à une vue partielle qui serait réutilisé sur plusieurs contrôleurs?