使用 jQuery 和 post 将文件上传到控制器
Upload file using jQuery and post it to Controller
我想知道是否可以通过将文件发布到 ASP.NET MVC 中的控制器操作来上传文件。此上传表单的对话框将动态生成,在我的例子中将位于 jQuery 对话框内。
我知道文件输入元素,但我不确定如何将文件发送到控制器操作,不知道如何设置 action
参数
<form id="frmFile" method="post" enctype="multipart/form-data" action="<%=Url.Content("~/WriteSomeServerAction/")%>" >
</form>
//把这个表单放在modal
并且 Make Submit 事件会将文件发送到 Action.There 您可以像 UploadedFileData 一样访问模型元素中的文件。
if (_File.UploadedFileData != null && _File.UploadedFileData.ContentLength > 0)
{
byte[] buffer = new byte[_File.UploadedFileData.ContentLength];
_File.UploadedFileData.InputStream.Read(buffer, 0, buffer.Length);
_File.FileData = System.Text.Encoding.Default.GetString(buffer);
_File.UploadedFileData = null;
}
你的操作应该是这样的:
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file) {
if (file.ContentLength > 0) {
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
}
return RedirectToAction("Index");
}
取自:http://haacked.com/archive/2010/07/16/uploading-files-with-aspnetmvc.aspx/
然后使用 jQuery 文件上传对话框:
$dialog.dialog("option", "buttons", {
"Save": function () {
var dlg = $(this);
var formData = new FormData($("#" + formName)[0]);
$.ajax({
url: /Controller/upload,
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function (response, textStatus, xhr) {
...
}
},
error: function (xhr, status, error) {
....
}
});
},
"Cancel": function () {
$(this).dialog("close");
$(this).empty();
}
});
我想知道是否可以通过将文件发布到 ASP.NET MVC 中的控制器操作来上传文件。此上传表单的对话框将动态生成,在我的例子中将位于 jQuery 对话框内。
我知道文件输入元素,但我不确定如何将文件发送到控制器操作,不知道如何设置 action
参数
<form id="frmFile" method="post" enctype="multipart/form-data" action="<%=Url.Content("~/WriteSomeServerAction/")%>" >
</form>
//把这个表单放在modal
并且 Make Submit 事件会将文件发送到 Action.There 您可以像 UploadedFileData 一样访问模型元素中的文件。
if (_File.UploadedFileData != null && _File.UploadedFileData.ContentLength > 0)
{
byte[] buffer = new byte[_File.UploadedFileData.ContentLength];
_File.UploadedFileData.InputStream.Read(buffer, 0, buffer.Length);
_File.FileData = System.Text.Encoding.Default.GetString(buffer);
_File.UploadedFileData = null;
}
你的操作应该是这样的:
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file) {
if (file.ContentLength > 0) {
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
}
return RedirectToAction("Index");
}
取自:http://haacked.com/archive/2010/07/16/uploading-files-with-aspnetmvc.aspx/
然后使用 jQuery 文件上传对话框:
$dialog.dialog("option", "buttons", {
"Save": function () {
var dlg = $(this);
var formData = new FormData($("#" + formName)[0]);
$.ajax({
url: /Controller/upload,
type: 'POST',
data: formData,
processData: false,
contentType: false,
success: function (response, textStatus, xhr) {
...
}
},
error: function (xhr, status, error) {
....
}
});
},
"Cancel": function () {
$(this).dialog("close");
$(this).empty();
}
});