2014-05-19 16 views
5

Devo caricare l'immagine prima che venga inviato il modulo. Quindi ho usato ajax per farlo.Carica immagine con ajax, HttpPostedFileBase è null Mvc Asp

Ecco il mio HelpController:

[HttpPost] 
public void AcceptUpload(HttpPostedFileBase TemporaryForLast, string ReferanceNo) 
{ 
    TemporaryForLast.SaveAs(Server.MapPath("~/Profiles/images/" + ReferanceNo + "/") + "HoldCopy" + ".jpg"); 
} 

Qui è la mia opinione:

<input id="HoldCopy" type="file" name="HoldCopy" accept="image/*"> 

Ans Script:

$("#acceptUpload").click(function() { 
    var formData= new FormData(); 
    var imagefile=document.getElementById("HoldCopy").files[0]; 
    formData.append("imageFile",imageFile); 
    var xhr = new XMLHttpRequest(); 
    xhr.open("POST", "/Help/AcceptUpload", true); 
    xhr.addEventListener("load", function (evt) { UploadComplete(evt); }, false); 
    xhr.addEventListener("error", function (evt) { UploadFailed(evt); }, false); 
    xhr.send(formData); 
}); 

error funzioni vengono aggiornati. Non sto scrivendo qui perché di questo avviso redattore:

It looks like your post is mostly code

+1

Ajax non supportano upload di file. Nessuno te l'ha detto? –

risposta

3

View

Invece di Jquery Ajax si potrebbe usare

<script> 
      function SubmitButtonOnclick() 
      { 
       var formData= new FormData(); 
       var imagefile=document.getElementById("imageFile").files[0]; 
       formData.append("imageFile",imageFile); 
       var xhr = new XMLHttpRequest(); 
       xhr.open("POST", "/Help/AcceptUpload", true); 
       xhr.addEventListener("load", function (evt) { UploadComplete(evt); }, false); 
       xhr.addEventListener("error", function (evt) { UploadFailed(evt); }, false); 
       xhr.send(formData); 

      } 

     function UploadComplete(evt) { 
     if (evt.target.status == 200) 
       alert("Logo uploaded successfully."); 

     else 
       alert("Error Uploading File"); 
     } 

    function UploadFailed(evt) { 
     alert("There was an error attempting to upload the file."); 

    } 
</script> 
+0

restituisce un errore ReferenceError: imageFile non definito \t formData.append ("imageFile", imageFile); – DSI

+0

@BarsDS in base al codice questa riga cambierà 'var imagefile = document.getElementById (" HoldCopy "). Files [0];' – Nilesh

+0

sì lo ho cambiato, e questo errore è apparso dopo aver cambiato – DSI