Сохранение изображения со страницы HTML в файл NetSuite Cab inet throw UNEXPECTED_ERROR - PullRequest
1 голос
/ 16 января 2020

У меня есть суллет, который создает страницу html. Эта страница содержит файл типа ввода элемента html. Я пытаюсь взять этот файл и загрузить его в файл cab inet. Это не делается в форме NetSuite, поэтому файловый элемент не является файловым объектом netsuite.

javascript на странице HTML выглядит следующим образом

function uploadPhotoToNetSuite(){
var bookingid = $("#txtAddPhotoBookingId").val();
var caseid = $("#txtAddPhotoCaseId").val();
var isCase = caseid != "";

var base64Image = document.getElementById("imageToAdd").src;
var formData = new FormData();

    formData.append("operations", 'uploadphoto');
    formData.append("bookingid", bookingid);
    formData.append("caseid", caseid);
    formData.append("image", base64Image);    

var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
    if (this.readyState == 4) {
        var objResponse = JSON.parse(xhr.responseText);
        if(!objResponse.uploadphoto.success){
            alert(objResponse.uploadphoto.err);
        } else {
            closeLoading();
        }
        clearPhotoUpload();
    }
};

xhr.open("POST", stAPIURL, true);
loading("Uploading Photo");
xhr.send(formData);
}

Тогда это соответствует к методу в моем суллете следующим образом.

function uploadPhoto(params, recUser){
    try{
        var imageFolder = 767406;
        var thePhoto = params.image;
        var filetype = "png";
        if(thePhoto.indexOf("image/png") > -1) filetype = "png";
        var theFile = file.create({
            name: 'test.' + filetype,
            fileType: filetype == "jpg" ? file.Type.JPGIMAGE : file.Type.PNGIMAGE,
            contents: thePhoto,
            description: 'This is a plain text file.',
            encoding: file.Encoding.UTF8,
            folder: imageFolder,
            isOnline: true
        });
        var id = theFile.save();
    } catch(err){
        return {
            success : false,
            err : JSON.stringify(err)
        }
    }
    return {
        success : true
    }
}

Когда это происходит, я получаю ошибку UNEXPECTED_ERROR. Переменная thePhoto является строкой base64 изображения.

ОБНОВЛЕНИЕ:

Я изменяю код суллета, чтобы создать текстовый файл и файл, который отлично загружен, и строку base64 был в текстовом файле. Когда я взял эту строку base64 и пропустил ее через конвертер, результатом было загруженное мной изображение.

Имея это в виду, я снова изменил код на;

var theFile = file.create({
    name: 'test.jpg',
    fileType: file.Type.JPGIMAGE,
    contents: thePhoto,
    description: 'This is a plain text file.',
    encoding: file.Encoding.UTF8,
    folder: imageFolder,
    isOnline: true
});

И загрузил файл .jpg. Я снова получил ошибку.

...