如何在 jquery 中将带有正常数据的文件上传路径发送到控制器
How to send file upload path with normal data to controller in jquery
我想通过 ajax 调用将具有正常数据的文件上传图像路径发送到 jquery 中的控制器。当我只发送正常数据时,它可以正常工作。当我只发送图像路径时,它也可以工作,但是当我一次发送两个图像路径时,它就不起作用。它会产生一个问题,例如有时 ajax 调用不起作用或有时值在控制器中显示为 null。
我在网上找了很多东西,但找不到确切的解决方案。我找到了一些解决方案,例如...缺少“enctype”和获取文件上传路径的方法以及许多其他方法。
这是我的JS文件编码。它工作正常,正在控制器中获取完整的图像路径。
var data = new FormData();
var files = $("#btnUploadFile").get(0).files;
if (files.length > 0) {
data.append("HelpSectionImages", files[0]);
}
$.ajax
({
type: 'POST',
url: '/Login/submitUserProfile',
processData: false,
contentType: false,
data: data,
success: function (result) {
},
error: function (result) {
}
});
Controller
[HttpPost]
public void submitUserProfile()
{
Request.Files["HelpSectionImages"];
//getting image path properly
}
简单视图 -
只需使用@using(Html.BeginForm.......enctype = "multipart/form-data"
和控制
但是我想发送一个带有图像路径的额外参数...
var userDetail = {};
userDetail.experience = experience;
userDetail.priceType = priceType;
userDetail.services = services;
现在,我希望控制器应该获取图像路径以及我在上面指定的 userDetail 信息。
终于,我得到了这个问题的解决方案。现在,我可以将带有正常数据的图像路径发送到 jquery 中的控制器。
JS 编码
var userProfile = {};
var userDetail = {};
var hidUserId = $('#hidUserId').val();
var userName = $('#txtUserName').val();
var experience = $('#txtExperience').val();
var priceType = $('#txtPriceType').val();
userProfile.hidUserId = hidUserId;
userProfile.userName = userName;
userDetail.experience = experience;
userDetail.priceType = priceType;
var UserProfileJson = JSON.stringify(userProfile);
var UserDetailJson = JSON.stringify(userDetail);
var data = new FormData();
var files = $("#btnUploadFile").get(0).files;
if (files.length > 0) {
data.append("userUploadedImage", files[0]);
data.append("userProfileJson", UserProfileJson);
data.append("userDetailJson", UserDetailJson);
}
$.ajax({
type: 'POST',
url: '/Login/submitUserProfile',
processData: false,
contentType: false,
data: data,
success: function (result) {
},
error: function (result) {
}
});
控制器
[HttpPost]
public string submitUserProfile()
{
try
{
string userProfileJson = Request.Form["userProfileJson"];
string userDetailJson = Request.Form["userDetailJson"];
HttpPostedFileBase userImage = Request.Files["userUploadedImage"];
}
}
我想通过 ajax 调用将具有正常数据的文件上传图像路径发送到 jquery 中的控制器。当我只发送正常数据时,它可以正常工作。当我只发送图像路径时,它也可以工作,但是当我一次发送两个图像路径时,它就不起作用。它会产生一个问题,例如有时 ajax 调用不起作用或有时值在控制器中显示为 null。
我在网上找了很多东西,但找不到确切的解决方案。我找到了一些解决方案,例如...缺少“enctype”和获取文件上传路径的方法以及许多其他方法。
这是我的JS文件编码。它工作正常,正在控制器中获取完整的图像路径。
var data = new FormData();
var files = $("#btnUploadFile").get(0).files;
if (files.length > 0) {
data.append("HelpSectionImages", files[0]);
}
$.ajax
({
type: 'POST',
url: '/Login/submitUserProfile',
processData: false,
contentType: false,
data: data,
success: function (result) {
},
error: function (result) {
}
});
Controller
[HttpPost]
public void submitUserProfile()
{
Request.Files["HelpSectionImages"];
//getting image path properly
}
简单视图 - 只需使用@using(Html.BeginForm.......enctype = "multipart/form-data" 和控制
但是我想发送一个带有图像路径的额外参数...
var userDetail = {};
userDetail.experience = experience;
userDetail.priceType = priceType;
userDetail.services = services;
现在,我希望控制器应该获取图像路径以及我在上面指定的 userDetail 信息。
终于,我得到了这个问题的解决方案。现在,我可以将带有正常数据的图像路径发送到 jquery 中的控制器。
JS 编码
var userProfile = {};
var userDetail = {};
var hidUserId = $('#hidUserId').val();
var userName = $('#txtUserName').val();
var experience = $('#txtExperience').val();
var priceType = $('#txtPriceType').val();
userProfile.hidUserId = hidUserId;
userProfile.userName = userName;
userDetail.experience = experience;
userDetail.priceType = priceType;
var UserProfileJson = JSON.stringify(userProfile);
var UserDetailJson = JSON.stringify(userDetail);
var data = new FormData();
var files = $("#btnUploadFile").get(0).files;
if (files.length > 0) {
data.append("userUploadedImage", files[0]);
data.append("userProfileJson", UserProfileJson);
data.append("userDetailJson", UserDetailJson);
}
$.ajax({
type: 'POST',
url: '/Login/submitUserProfile',
processData: false,
contentType: false,
data: data,
success: function (result) {
},
error: function (result) {
}
});
控制器
[HttpPost]
public string submitUserProfile()
{
try
{
string userProfileJson = Request.Form["userProfileJson"];
string userDetailJson = Request.Form["userDetailJson"];
HttpPostedFileBase userImage = Request.Files["userUploadedImage"];
}
}