2012-01-09 23 views
6

kullanabilir miyimASP.NET MVC 3: HTML5 çoklu dosya yükleme desteği?</p> <pre><code><input type="file" name="files" id="files" multiple="multiple" /> </code></pre> <p>ve onu bağlamak:

[HttpPost] 
public ActionResult Upload(IEnumerable<HttpPostedFileBase> files) 
{ 
    ... 
} 

Modern tarayıcılar için bir web uygulaması yazıyorum ve bu yüzden İsterdim IE konusunda endişelenmenize gerek yok Flash kullanmaktan kaçının. Şu anda formu gönderdiğimde files şimdi boştur. Bunu MVC 3'te çalışmak için herhangi bir yolu var mı?

Teşekkürler!

+1

olası yinelenen ([Çoklu Dosya HTML 5 ile yükleyin] http://stackoverflow.com/questions:

foreach (HttpPostedFileBase uf in Request.Files) { HttpPostedFileBase UpoadedFile = uf; } 

böyle mi yapalım/8713802/multi-file-upload-with-html-5) –

+1

Muhtemelen özel bir model bağlayıcı oluşturmanız gerekecektir. – Craig

+0

Veya imzayı açın "public ActionResult Yükle (HttpPostedFileBase [] dosyaları)' –

cevap

13

Kodlama kümeniz formunuza doğru şekilde yerleştirilmiş mi? Sana inanıyorum

hala gerekir:

new { enctype = "multipart/form-data" } 

formu bildirisinde dosyaları gönderebilir tarayıcı sağlamak için. Örneğin

:

@using (Html.BeginForm("action", "controller", FormMethod.Post, new { enctype = "multipart/form-data" })) 
+0

Evet, kodlama setini doğru bir şekilde ayarladım. Teşekkürler –

+0

Tamam, çok erken konuştu. Çift kontrol etmek için geri gitti ve ben dosya-o-ecek yazıyorum önleyen bir tür-o vardı! –

1

olmaz mıydı bir kullanım geriye dönük uyumluluk için Request.Files şöyle:

public ActionResult UploadFiles() 
{ 
    string UpoadedFilesFolder = "YourServerFolder"; 
    string fileName =""; 
    byte[] fileData=null; 
    foreach (HttpPostedFileBase uf in Request.Files) 
    { 
    HttpPostedFileBase UpoadedFile = uf; 
    if (uf.ContentLength > 0) 
    { 
     fileName = Path.GetFileName(UpoadedFile.FileName); 
     using (BinaryReader br = new BinaryReader(UpoadedFile.InputStream)) 
     { 
     fileData = br.ReadBytes((int)UpoadedFile.InputStream.Length); 
     } 
     using (FileStream fs = new FileStream(Path.Combine(System.Web.Hosting.HostingEnvironment.MapPath(UpoadedFilesFolder), fi.FileName), FileMode.Create)) 
     { 
     fs.Write(fileData, 0, fileData.Length); 
     } 
    } 
    } 
    return Content("OK"); 
} 
0

Benim Endeksi Görünüm:

kontrolörü

yılında
@using (Html.BeginForm("Upload","home", FormMethod.Post,new { enctype = "multipart/form-data" })) 
{ 
    <input type="file" name="files" value=" " multiple="multiple" /> 
    <input type="submit" name="btUpload" value="Upload" /> 
} 

public ActionResult Upload(HttpPostedFileBase[] files) 
     { 
      TempData["Message"] = files.Count(); 
      return RedirectToAction("Index"); 
     } 

Ve dosyalar yüklenen dosyaları içeriyor - benim için iyi çalışıyor!

0

Bu çalışmaz:

for (int i=0; i<Request.Files.Count; i++) 
{ 
    HttpPostedFileBase UpoadedFile = Request.Files[i]; 
} 
İlgili konular