Итак, в моем приложении у пользователей есть возможность загрузить файл в <input type = "file" id = "my-file">
(ввод файла HTML 5). Впоследствии я могу получить этот файл, используя следующий Javascript:
var files = $("#my-file").files;
var file = files[0];
Могу ли я как-то использовать этот var file
как data
в теге <object>
? Вот пример тега объекта, в котором PDF-файл захватывается путем нажатия URL-адреса и связи с сервером.
<object data="data/test.pdf" /*<-- I want the var file here */ type="application/pdf" width="300" height="200">
</object>
Как я могу это сделать? Обратите внимание, я должен поддерживать Internet Explorer 11.
ОБНОВЛЕНИЕ:
Я пытался что-то, что в конечном итоге закончилось неудачей. Я преобразовал PDF в data-uri с помощью FileReader, а затем использовал его в атрибуте data
тега <object>
, который отлично отображается в Chrome, но совсем не в Internet Explorer.
var files = $(e.currentTarget.files);
file = files[0];
var reader = new FileReader();
reader.onloadend = function() {
var data = reader.result;
console.log(data);
$("#content").prepend('<object id="objPdf" data="'+data+'" type="application/pdf"></object>');
};
reader.readAsDataURL(file);
Где данные читателя выглядят так:
data:application/pdf;base64,JVBERi0xLjQKJe...
Вот причина, по которой PDF-файлы не работают с этим подходом в Internet Explorer (только изображения)... так грустно :(
ОБНОВЛЕНИЕ 2:
Пробовал pdf.js с некоторым успехом... он отображает PDF на странице, хотя он невероятно медленный (5 секунд для одной страницы) в Internet Explorer 11. Он также отображает только одну страницу за раз, тогда как тег <object>
мгновенно отображал все страницы в удобном прокручиваемом контейнере. Хотя это крайний запасной вариант, я бы не хотел идти по этому пути.
У кого-нибудь есть другие идеи о том, как я могу просмотреть PDF-файлы, которые пользователь загружает прямо на веб-страницу?
<html>
- person charlietfl   schedule 16.07.2015<object>
? Просто для ясности: я хочу использовать данные в<object>
сvar file
, которые я получаю из пользовательского ввода, а не из файла, полученного с сервера. - person kibowki   schedule 16.07.2015<input type = "file">
, что позволяет пользователю загружать файл из своей файловой системы. Я хочу получить этот файл (который будет в формате PDF) и позволить им просмотреть его. Этот файл, который они выбрали (var file
из моего примера кода), я пытаюсь поместить в тег<object>
. - person kibowki   schedule 16.07.2015