如何使用json Ajax将文件以及一些输入字符串发送到Codebehind中的Web方法?

时间:2018-10-14 06:26:59

标签: c# asp.net json ajax webmethod

所以我有这个表格,要求用户填写输入框,文件(例如docx,pdf等)和图像(例如jpg,png等)中的一些文本,然后所有数据都将发送到[ Ived成功地使用json / ajax请求从输入框中实现了字符串(如标题,标题等)。 唯一让我陷入困境的是文件要通过json传递并被codebehind接收。 任何帮助或建议都将不胜感激

$.ajax({
    type: "POST",
    url: "insert.aspx/eventCreate",
    data: {
        'eventImage': eventImage,//here's the image
        'eventFile': eventFile, //here's the file
        'eventTitle': eventTitle,
        'eventDesc': eventDesc,
        'eventPlace': eventPlace,
        'eventType': eventType,
        'eventAttendee': eventAttendee,
        'userID': userID
    },
    async: true,
    contentType: "application/json; charset=utf-8",
    success: function (data, status) {
        console.log("Call successfull test");
        alert(data.d);
    },
    failure: function (data) {
        alert(data.d);
    },
    error: function (data) {
        alert(data.d);
    }
});

[WebMethod(EnableSession = true)]
public static string eventCreate(string eventTitle, string eventDesc, string eventPlace, string eventType, string eventAttendee, string UserID)
{
    //how do I get the Image and file from the request??


    return "0";
}

1 个答案:

答案 0 :(得分:0)

对不起,您刚刚注意到您正在使用“ WebMethod”。

您可以将文件作为base64字符串发布,并在WebMethod中接收该文件,然后将base64转换回WebMethod中的文件。

请点击链接how-to-convert-file-to-base64-in-javascript,将文件转换为base64。

和链接base64-encoded-string-to-file可以将base64转换回您的Web方法中的文件。

function getBase64(file) {
   var reader = new FileReader();
   reader.readAsDataURL(file);
   reader.onload = function () {
     console.log(reader.result);
   };
   reader.onerror = function (error) {
     console.log('Error: ', error);
   };
}

$.ajax({
    type: "POST",
    url: "insert.aspx/eventCreate",
    data: {
        'eventImage': eventImage,//here's the image
        'eventFile': eventFile, //here's the file
        'eventTitle': eventTitle,
        'eventDesc': eventDesc,
        'eventPlace': eventPlace,
        'eventType': eventType,
        'eventAttendee': eventAttendee,
        'userID': userID,
        'fileBase64': getBase64(document.getElementById('fileUploadId').files[0])
    },
    async: true,
    contentType: "application/json; charset=utf-8",
    success: function (data, status) {
        console.log("Call successfull test");
        alert(data.d);
    },
    failure: function (data) {
        alert(data.d);
    },
    error: function (data) {
        alert(data.d);
    }
});

[WebMethod(EnableSession = true)]
public static string eventCreate(string eventTitle, string eventDesc, string eventPlace, string eventType, string eventAttendee, string UserID, string fileBase64)
{
    //how do I get the Image and file from the request??
    File.WriteAllBytes(@"c:\yourfile", Convert.FromBase64String(fileBase64));


    return "0";
}