如何在 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"];
         }
    }