无法上传使用Ajax.BeginForm文件()异步 [英] not able to upload file using Ajax.BeginForm() asynchronously
问题描述
我试图用上传Ajax.BeginForm()的文件,但它不工作了。
I'm trying to upload a file using Ajax.BeginForm() but it's not working out.
我的视图包含:
@using (Ajax.BeginForm("UploadFile", null, new AjaxOptions { HttpMethod="POST", UpdateTargetId = "result" }, new { enctype = "multipart/form-data" }))
{
<label id="lblUploadNewFile" for="fileUploadControl">Upload New File</label>
<input type="file" name="fileToUpload" id="fileUploadControl"/>
<input id="btnFileUpload" type="submit" value="Upload" />
<span id="result" />
}
和相应的控制器是:
[HttpPost]
public string UploadFile(FormCollection formData)
{
HttpPostedFileBase file=null;
try
{
file = Request.Files[0];
}
catch { }
if ( file!=null && file.ContentLength > 0)
{
file.SaveAs(string.Concat(
AppDomain.CurrentDomain.BaseDirectory,
Path.GetFileName(file.FileName)));
return "Successfully Uploaded";
}
else
{
return "Upload Failed, please try again.";
}
}
现在的问题是,它的上传文件,但不再做任何异步帖的时候我删除 jquery.unobtrusive-ajax.js
。相反,它做了充分后回。
The problem is that it's uploading the file but no longer doing any asynchronous posts when I remove jquery.unobtrusive-ajax.js
. Instead, it does a full post-back.
当我加入 jquery.unobtrusive-ajax.js
在我看来,它做异步但在表单数据不发送上传文件。没有文件被发送到服务器 Request.Files []
。
When I add jquery.unobtrusive-ajax.js
in my view, it's doing asynchronous but not sending upload file in form data. No file is being sent to the server in Request.Files[]
.
推荐答案
您无法上传使用AJAX的文件。这是不支持的。如果你想这样做,你既可以使用一些文件上传插件,如 Uploadify
或 Blueimp文件上传或使用的 HTML 5文件API
如果客户端浏览器支持它。
You cannot upload files using AJAX. This is not supported. If you want to do that you could either use some file upload plugin such as Uploadify
or Blueimp File Upload or use the HTML 5 File API
if the client browser supports it.
这篇关于无法上传使用Ajax.BeginForm文件()异步的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!