2011-01-13 25 views

Respuesta

27

No hay un asistente de HTML para las entradas de archivo, pero lo que es malo con sólo hacer

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

Ningún cliente validación del lado de la caja. –

+12

No hay nada fuera de la caja – Jimmy

+0

'' FilePath se da como el nombre de la propiedad del modelo, por lo que puede usarlo como cualquier otro control. – PAVITRA

4

Hay una clase FileUpload en Microsoft.Web.Helpers ... http://msdn.microsoft.com/en-us/library/microsoft.web.helpers.fileupload(v=vs.99).aspx

La mejor/La única manera que he encontrado para obtenerlo es usando NuGet en VisualStudio. Busque el paquete "microsoft-web-helpers" en el repositorio en línea. Sin embargo, hay un problema que encontré. Una de las dependencias del paquete es Facebook.Helper, que se instalará al mismo tiempo. Colocará un archivo llamado "Facebook ???. Cshtml" (olvidó el nombre exacto) en el directorio AppCode de su proyecto. El problema es que Facebook ???. Cshtml tenía algunas dependencias de WebMatrix que no tenía y no deseaba instalar. Simplemente al eliminar el archivo Facebook.cshtml (que no iba a usar, de todos modos) pareció resolver el problema. Después de eso, pude compilar y depurar como de costumbre y usar la clase FileUpload.

Aquí hay un tutorial que encontré que lo utiliza:

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

+3

Ese tutorial está bien, pero no explica claramente qué código va a dónde. Sugeriría este en su lugar, ya que solo se trata de subir archivos (sin cambiar el tamaño de las imágenes): http://blogs.planetcloud.co.uk/mygreatdiscovery/post/Creating-a-multiple-file-upload-form-in -ASPNET-MVC.aspx – Pauk

+0

El enlace de Pauk dio paso a bitrot. Aquí hay un [enlace de Wayback] (http://web.archive.org/web/20150712030605/http://blogs.planetcloud.co.uk:80/mygreatdiscovery/post/Creating-a-multiple-file-upload-form -en-ASPNET-MVC.aspx) – jpaugh

0

USO DE AFEITAR

@*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

Ninguno de este inicio de sesión 'IsPost' debe estar en la vista, todo pertenece al controlador, idealmente dividido entre dos métodos, uno de los cuales tiene el decorador' [HttpPost] '. –

Cuestiones relacionadas