2012-04-20 10 views
1

を使用してコントローラにファイルを渡すために、私は、ユーザーがアップロードした後のページを離れることがないようにjqueryのを使用して、私のコントローラにファイルを渡すためにしようとしている....どのようにjqueryの

私ができます」これはうまくいくと思われる。私は一度それが私のコントローラに渡すと、 "null参照"を取得し続けます。ここで私が試したものです:

コントローラー:

[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:

AJAXを使用して行うことができない
function upload() { 

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

答えて

1

あなたは正しいurlに提出されたときに、フォームに戻りますが、結果を監視することができ<input type="file" />フィールドでformを持っている隠されたiframeを作成する必要があります。

このように、シームレスに表示されます。