Как отправить файл вместе с некоторыми входными строками на веб-метод в Codebehind с помощью JSON Ajax? - PullRequest
0 голосов
/ 14 октября 2018

Итак, у меня есть эта форма, которая требует, чтобы пользователь заполнил некоторые тексты в поле ввода, в файле (например, .docx, pdf и т. Д.) И в изображении (например, .jpg, png и т. Д.), Тогда все данные будут отправлены на [Webmethod] в codebehind - и выполнить какой-то процесс. Ived успешно реализовал поле ввода Strings from (например, заголовок, описание и т. Д.), Используя запрос 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 голосов
/ 14 октября 2018

Извините, только что заметил, что вы используете 'WebMethod'.

Вы можете опубликовать свой файл в виде строки base64 и получить то же самое в своем WebMethod, и преобразовать base64 обратно в файл в своем WebMethod.

перейдите по ссылке как конвертировать файл в base64-in-javascript , чтобы преобразовать файл в base64.

и ссылку base64-encoded-строка-в-файл для преобразования base64 обратно в файл в вашем веб-методе.

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";
}
...