2012-04-20 42 views
1

我想一個文件傳遞給使用jQuery我的控制器,使用戶不必上傳後離開該頁面通過一個文件到控制器....如何使用jQuery

我可以」似乎得到這個工作。一旦傳遞給我的控制器,我會一直收到「空引用」。以下是我已經試過:

控制器:

[HttpPost] 
public ActionResult Upload(HttpPostedFileBase file) 
{ 
var image = Path.GetFileName(file.FileName); 

if (file != null && file.ContentLength > 0) 
{ 
var fileName = Path.GetFileName(file.FileName); 
var filePath = Path.Combine(Server.MapPath("~/Content/Images/UploadedImages/"), System.IO.Path.GetFileName(file.FileName)); 
file.SaveAs(filePath); 

return Json(filePath.ToString()); 
} 

else 
{ 
return Json("Image failed to load"); 
} 

} 

查看:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 

@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data", id = "testupload", name = "testupload" })) 
{ 

<div class="editor-field"> 
<input type="file" name="file" id="file" /> 
</div> 

<input type="submit" value="Submit"/> 
} 

<input type="button" onclick="upload();" value="Upload" /> 

<input type="text" id="url"/> 

的Jquery:

function upload() { 

$.post("../../../Home/Upload", $("#testupload"), function (data) { 
$("#url").val(data); 
}); 
} 

回答

1

不能使用AJAX來完成。

您需要創建一個隱藏的iframe具有與提交到正確的url<input type="file" />領域form並可以監視結果的形式返回時。

這樣,它會顯得無縫。