1 回答
TA贡献1802条经验 获得超4个赞
为什么是serialize
表格?此方法创建一个可以发送到服务器的字符串,但这不是您想要做的......
FormData
type 会自动管理enctype
您的表单,因此您可以省略它 - 尽管您应该考虑使用它,因为它可以帮助团队中的其他成员理解意图。如果您想使用纯 jQuery,您只需将formData
变量附加到data
调用的字段即可$.ajax
。看看这里,
/*
* i know id-based selection should only have 1 element,
* otherwise HTML is invalid for containing multiple elements
* with the same id, but this is the exact code i used back then, so using it again.
**/
var formData = new FormData($('#form')[0]);
$.ajax({
type: 'POST',
processData: false,
contentType: false,
data: formData,
success: function (data) {
// The file was uploaded successfully...
$('.result').text('File was uploaded.');
},
error: function (data) {
// there was an error.
$('.result').text('Whoops! There was an error in the request.');
}
});
这当然要求您的 HTML DOM 包含这些元素——我使用了几年前为我的文章编写的代码。其次,对于该功能的其他部分,我曾经Request.Files捕获可能已随请求上传的文件。
files = Request.Files.Count;
if(files > 0) {
// Files are sent!
for (int i = 0; i < files; i++) {
var file = Request.Files[i];
// Got the image...
string fileName = Path.GetFileName(file.FileName);
// Save the file...
file.SaveAs(Server.MapPath("~/" + fileName));
}
}
这样,我使用 jQuery 和FormData.
您可以查看我在此处发布的完整文章,上传文件 — HTML5 和 jQuery 方式!
哦,不要忘记评论中提出的建议,
using (var com = new SqlCommand("dbo.sp_some_stored_procedure_for_saving_data", con))
{
con.Open(); // missed call?
data = Convert.ToString(com.ExecuteScalar());
// although, using should close here!
var file_path = Path.Combine(path, data + Extension);
fileUpload.SaveAs(file_path);
}
所以,这就是你可以做到这一点的方法。
- 1 回答
- 0 关注
- 162 浏览
添加回答
举报