2011-01-13 14 views

risposta

27

Non c'è un aiuto html per gli ingressi dei file, ma ciò che è sbagliato con solo facendo

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

Nessun cliente convalida lato, fuori dalla scatola. –

+12

Non batte niente fuori dalla scatola – Jimmy

+0

'' FilePath viene fornito come nome della proprietà del modello, quindi puoi usarlo come qualsiasi altro controllo. – PAVITRA

4

C'è una classe FileUpload in Microsoft.Web.Helpers ... http://msdn.microsoft.com/en-us/library/microsoft.web.helpers.fileupload(v=vs.99).aspx

La migliore/L'unico modo che ho trovato per ottenerlo è l'utilizzo di NuGet in VisualStudio. Cerca il pacchetto "microsoft-web-helpers" nel repository online. C'è un problema che ho incontrato, tuttavia. Una delle dipendenze del pacchetto è Facebook.Helper, che verrà installato nello stesso momento. Inserirà un file chiamato "Facebook ???. Cshtml" (dimenticato il nome esatto) nella directory AppCode del progetto. Il problema è che Facebook ???. Cshtml aveva alcune dipendenze di WebMatrix che non avevo e non volevo installare. Semplicemente cancellando il file Facebook.cshtml (che non avrei mai usato, comunque) sembrava risolvere il problema. Successivamente, sono stato in grado di compilare e eseguire il debug come al solito e utilizzare la classe FileUpload.

Ecco un tutorial ho scoperto che lo utilizza:

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

+3

Quel tutorial è OK, ma non spiega chiaramente quale codice va dove. Suggerirei questo invece dato che si tratta solo di caricare i file (non ridimensionando le immagini): http://blogs.planetcloud.co.uk/mygreatdiscovery/post/Creating-a-multiple-file-upload-form-in -ASPNET-MVC.aspx – Pauk

+0

Il collegamento di Pauk ha ceduto il passo al bitrot. Ecco un [Wayback link] (http://web.archive.org/web/20150712030605/http://blogs.planetcloud.co.uk:80/mygreatdiscovery/post/Creating-a-multiple-file-upload-form -in-ASPNET-MVC.aspx) – jpaugh

0

UTILIZZO RAZOR

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

Nessuno di questo login 'IsPost' dovrebbe essere nella vista, tutto appartiene al controller, idealmente diviso tra due metodi, uno dei quali con il decoratore' [HttpPost] '. –

Problemi correlati