web-dev-qa-db-fra.com

Contrôles de téléchargement de fichiers utilisant Razor dans ASP.NET MVC3

Est-il possible de définir les contrôles de téléchargement de fichier à l'aide d'un assistant Razor dans ASP.NET MVC3?

15
Steven Spielberg

Il n’existe pas d’aide HTML pour les entrées de fichiers, mais qu’est-ce qui ne va pas?

@using (Html.BeginForm("Action", "Controller", FormMethod.Post, new {enctype = "multipart/form-data"})) {
    <input type='file' name='blah' id='blah' />
}
27
Jimmy

Il existe une classe FileUpload dans Microsoft.Web.Helpers ... http://msdn.Microsoft.com/en-us/library/Microsoft.web.helpers.fileupload(v=vs.99).aspx

Le meilleur/seul moyen que j'ai trouvé pour l'obtenir est d'utiliser NuGet dans VisualStudio. Recherchez le package "Microsoft-web-helpers" dans le référentiel en ligne. Il y a cependant un problème que j'ai rencontré. Une des dépendances du paquet est Facebook.Helper, qu'il installera en même temps. Il placera un fichier appelé "Facebook ???. Cshtml" (oublié le nom exact) dans le répertoire AppCode de votre projet. Le problème est que Facebook ???. Cshtml avait des dépendances WebMatrix que je n'avais pas et que je ne voulais pas installer. Supprimer simplement le fichier Facebook.cshtml (que je n'allais pas utiliser de toute façon) semblait résoudre le problème. Après cela, j'ai pu compiler et déboguer comme d'habitude et utiliser la classe FileUpload.

Voici un tutoriel que j'ai trouvé qui l'utilise:

http://blog.tallan.com/2011/02/04/using-mvc3-razor-helpers-and-jcrop-to-upload-and-crop-images/

4
Don

UTILISATION DU RASOIR

@*requieres installing Asp helpers / you can do it her from NuGet or logging som admin in packages*@
@using Microsoft.Web.Helpers;
@{
    var fileName = "";
    if (IsPost) {
        var fileSavePath = "";
        var uploadedFile = Request.Files[0];
        fileName = Path.GetFileName(uploadedFile.FileName);
        fileSavePath = Server.MapPath("~/UploadedFiles/" +
          fileName);
        uploadedFile.SaveAs(fileSavePath);
    }
}

      @FileUpload.GetHtml(
        initialNumberOfFiles:1,
        allowMoreFilesToBeAdded:false, 
        includeFormTag:false,
        name: "Upload1",
        uploadText:"Upload")

    @if (IsPost) {
        <span>File uploaded!</span><br/>
    }
0
jarimos