Я работаю над тестовой средой, которая должна передавать файлы прослушивателю падения экземпляра PLUpload. Мне нужно создать объекты blob для передачи внутри объекта передачи данных типа, сгенерированного в событии Drag/Drop. У меня он отлично работает для текстовых файлов и файлов изображений. Я хотел бы добавить поддержку PDF, но кажется, что я не могу получить кодировку сразу после получения ответа. Ответ возвращается в виде текста, потому что я использую Sahi для его получения, чтобы избежать междоменных проблем.
Вкратце: строка, которую я получаю, имеет кодировку UTF-8, и поэтому содержимое выглядит так, как будто вы открыли PDF-файл в текстовом редакторе. Мне интересно, как преобразовать это обратно в необходимый формат для создания большого двоичного объекта, чтобы после загрузки документа все выглядело нормально.
Какие шаги мне нужно выполнить, чтобы преобразовать строку UTF-8 в правильный объект большого двоичного объекта? (Да, я знаю, что мог бы отправить запрос XHR и изменить свойство responseType и (возможно) приблизиться, однако из-за сложностей с тем, как работает Сахи, я не собираюсь объяснять здесь, почему я предпочел бы не идти по этому пути. ).
Кроме того, я недостаточно знаком, но у меня есть предчувствие, что, возможно, я потеряю данные, извлекая их в виде строки? Если это так, я найду другой подход.
Существующий код и самый последний подход, который я пробовал, находится здесь:
var data = '%PDF-1.7%����115 0 obj<</Linearized 1/L ...'
var arr = [];
var utf8 = unescape(encodeURIComponent(data));
for (var i = 0; i < utf8.length; i++) {
arr.push(utf8.charCodeAt(i));
}
var file = new Blob(arr, {type: 'application/pdf'});