我有一个 html 页面,其中包含一个带有文件上传输入的表单。
我需要将 jquery ajax 函数中的所有字段传递给包含 WebMethod 的 aspx 页面,在这种方法中,我应该将图像上传到网站文件系统,而不是作为数据库中的字节。
在 c# 中使用带有 webmethod 的 jquery ajax 是否可行
我有一个 html 页面,其中包含一个带有文件上传输入的表单。
我需要将 jquery ajax 函数中的所有字段传递给包含 WebMethod 的 aspx 页面,在这种方法中,我应该将图像上传到网站文件系统,而不是作为数据库中的字节。
在 c# 中使用带有 webmethod 的 jquery ajax 是否可行
如果您想将文件保存到网站文件系统,那么这是可行的。我遇到了使用 webmethod 上传文件的相同场景并看到了这个问题。我解决了这个问题,所以尽管分享我的解决方案。希望它会帮助某人。
下面是我们创建一个 FormData 对象并将我们的文件附加到它,然后通过 Jquery Ajax 将此 FormData 对象传递给 WebMethod 的代码。
var Upload = function () {
var fileInputCtrl = $('<input id="File_OpenInputCtrl" type="file" style="position: fixed; top: -100em" multiple/>');
fileInputCtrl.off('change').on('change', function (evt) {
var files = evt.target.files;
var fd = new FormData();
for (var f = 0; f < files.length; f++) {
var file = files[f];
fd.append(file.name, file);
}
// Upload the formdata
$.ajax({
url: "Webservice.asmx/UploadFiles",
type: "POST",
data: fd,
contentType: false,
processData: false,
success: function (result) {
alert(result);
$('#File_OpenInputCtrl').remove();
},
error: function (err) {
alert(err.statusText);
$('#File_OpenInputCtrl').remove();
}
});
});
fileInputCtrl.click();
}
网络方法
public string UploadFiles()
{
//this function handles the upload of gallery images and magazine file
var Request = HttpContext.Current.Request;
System.Web.HttpFileCollection Files = Request.Files;
try
{
for (int i = 0; i < Files.Count; i++)
{
System.Web.HttpPostedFile File = Files[i];
File.SaveAs(HttpContext.Current.Server.MapPath("~/Uploads/" + File.FileName));
}
return "Files Saved Successfully!";
}
catch (Exception ex)
{
return ex.Message;
}
}
希望能帮助到你。