2013-01-01 10 views
6

Aktualnie używam asp.net mvc 4, i używam przesyłania plików jquery, aby przesłać obrazy, jeśli zainicjuję w ten sposób:asp.net mvc 4 z jquery-file-upload Request.Files.Count zawsze 0

 $('#fileupload').fileupload(); 

     $('#fileupload').fileupload('option', { 
      //url: '/Admin/News/Create', 
      maxFileSize: 500000000, 
      acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, 
      maxNumberOfFiles: 1, 
      resizeMaxWidth: 1920, 
      resizeMaxHeight: 1200, 
     }); 

po wybraniu pliku obrazu, obraz może wyświetlić podgląd w borwserze, ale w Żądaniu akcji mvc. Plik.Count jest równy 0, co oznacza, że ​​żaden plik nie został przesłany. A jeśli zainicjować tak:

 //$('#fileupload').fileupload(); 

     $('#fileupload').fileupload('option', { 
      //url: '/Admin/News/Create', 
      maxFileSize: 500000000, 
      acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, 
      maxNumberOfFiles: 1, 
      resizeMaxWidth: 1920, 
      resizeMaxHeight: 1200, 
     }); 

nie mogę podejrzeć obraz, ale MVC Action pobrać plik, czy ktoś wie dlaczego? kod pocztowy dla kontrolera:

[HttpPost] 
    [ValidateInput(false)] 
    public ActionResult Create(NewsViewModel model, FormCollection form) 
    { 
     if (ModelState.IsValid) 
     { 
      //.... 

      // upload image 
      foreach (string file in Request.Files) 
      { 
       HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase; 
       if (hpf.ContentLength == 0) 
        continue; 
       string path = Path.Combine(Server.MapPath("~/Uploads/News/"),GUID.NewGuid()+ Path.GetExtension(hpf.FileName)); 
       hpf.SaveAs(path); 

       data.ImagePath = path; 
       _iNewsService.UpdateNews(data); 
      } 
     }   
    } 
+0

Dlaczego wiersz "url:"/Admin/Aktualności/Utwórz "został skomentowany? – Omar

+0

coz nie chcę automatycznego wysyłania, a ja używam mocno wpisanego widoku, formularz ma przypisaną akcję –

+0

@Behnam Esmaili zobacz pytanie –

Odpowiedz

0

miałem ten sam problem, rozwiązać go z następujących:

[HttpPost] 
    [ValidateInput(false)] 
    public ActionResult Create(NewsViewModel model, FormCollection form) 
    {     
      var length = Request.ContentLength; 
      var bytes = new byte[length]; 
      Request.InputStream.Read(bytes, 0, length); 

      //or for creating image from stream 

      Bitmap bmp = new Bitmap(Bitmap.FromStream(InputStream)); 
      bmp.Save("some path"); 

    } 

nadzieja to może pomóc.

+0

Bitmap bmp = nowa bitmapa (Bitmap.FromStream (InputStream)); Próbowałem inne sposoby, takie jak użyć obrazu zamiast Bitmap, linia ta zawsze hit wyjątek "Parametr nie jest prawidłowy" –

+0

miałeś na myśli Request.InputStream ma wartość null? –

+0

bajtów ma wartość –