InboxSDK - невозможно прикрепить файлы через объект composeView

Я пытаюсь прикрепить вложение через объект composeView с помощью Inboxsdk. Я получаю объект BLOB из удаленного URL, используя следующий код.

// FUNCTION TO OPEN A NEW COMPOSE BOX ONCE THE ATTACHMENT BLOB IS OBTAINED FROM REMOTE URL.
function openComposeBox(sdk, blob){
  handler = sdk.Compose.registerComposeViewHandler(function(composeView){
     if(blob != null){
       composeView.attachFiles([blob]);
       composeView.setSubject("Testing");
    }
 });
}

// FETCHING ATTACHMENT FILE FROM REMOTE URL
var file_btn_url = "https://api.hummingbill.com/system/invoices/invoice_files/000/033/393/original/abracadabra.txt";
var file_name = file_btn_url.split("/");
file_name = file_name[file_name.length-1];
file_type = /[^.]+$/.exec(file_name);

var blob = null;
var xhr = new XMLHttpRequest();
xhr.open("GET", file_btn_url);
xhr.responseType = "blob";                                       
xhr.onload = function()
{
       blob = xhr.response;
    // blob.lastModifiedDate = new Date(); // Since it's not necessary to have it assigned, hence commented.
        blob.name = file_name;                                          
        console.log(blob);
      openComposeBox(sdk, blob);

}
xhr.send();

Отображается ошибка вложения. Приложение не удалось

Не удалось прикрепить файл в окне создания

Хотя у меня есть правильный формат объекта BLOB-объекта в соответствии с требованиями документации.

Объект Blob

Согласно документации, я установил имя файла для большого двоичного объекта и передал его в массив функции attachFiles. Можете ли вы посмотреть на это и дать мне знать, что мне не хватает?

0 ответов

Размещаем решение. Код остается таким же, как и в вопросе, с небольшим изменением, в котором мы конвертируем BLOB-объект в файл, чтобы он работал.

//... Same as the code in the question


// Fetching attachment file from remote url
var file_btn_url = "https://api.hummingbill.com/system/invoices/invoice_files/000/033/393/original/abracadabra.txt";
var file_name = file_btn_url.split("/");
file_name = file_name[file_name.length-1];
file_type = /[^.]+$/.exec(file_name);

var blob = null;
var xhr = new XMLHttpRequest();
xhr.open("GET", file_btn_url);
xhr.responseType = "blob";                                       
xhr.onload = function()
{
     // Solution: Convert the obtained blob to a file
     // Pass the file to openComposeBox
     blob = new Blob([xhr.response], { type: xhr.responseType });
     var file = new File([blob], file_name);
     blob.name = file_name;                     
     openComposeBox(sdk, file);
}
xhr.send();

Надеюсь это поможет. Ура!

Другие вопросы по тегам