Это то, что я хочу сделать:
Я хочу отправить HTTP-запрос на сервер, потенциально возвращая PDF-файл.Но сервер также может просто вернуть код ошибки (файл PDF недоступен, файл PDF недействителен, система PDF отключена и т. Д.).Когда я получаю PDF, я хотел бы открыть PDF и обновить страницу, которая загрузила PDF, потому что PDF тогда помечен как «прочитанный».Когда я получаю код ошибки (или тайм-аут), я бы хотел перенаправить страницу на экран ошибок.Загрузка Google Chrome работает аналогично:
http://www.google.com/chrome/eula.html?hl=en&platform=win
Это то, чего я не хочу делать:
По соображениям производительности я не хочуотправьте два запроса, как предложено в этом вопросе здесь:
Загрузите и откройте файл PDF, используя Ajax
Два запроса могут означать:
- Makeзапросить PDF и вернуть код, чтобы указать, доступен ли PDF или нет.Если недоступно, немедленно отобразите страницу с ошибкой
- Если она доступна, откройте окно и снова запросите PDF в этом окне и отобразите его.
Это дорого, потому что в PDF естьбыть доступным через удаленные системы.Я не хочу получать доступ к PDF-ресурсу дважды.Другое решение, включающее два запроса:
- Сделайте запрос на PDF и получите код ошибки или временный URL-адрес, где PDF-файл кэшируется.В случае ошибки немедленно отобразите страницу ошибки
- Если файл PDF доступен, откройте окно, в котором отображается кэшированный PDF.
Для этого потребуется довольно большой кэш для
* 1033 в формате PDF * Это может быть интересное руководство:
Я нашел этот вопрос здесь, давая мне некоторую информацию о том, как я могу загрузить двоичные данные и сделать их доступными в JavaScript в виде двоичных данных:
Есть ли способ прочитать двоичные данные в JavaScript?
Может быть, это хороший пример, но, конечно, это еще не решит мою проблему, так как я хочу использоватьредактор браузера по умолчанию, чтобы открыть файл, как если бы я запросил файл с обычного URL.
Итак, вопрос:
Можно ли загрузить двоичные данные и открыть их, как обычный документиз JavaScript?Если нет, я кэширую документ в каком-либо контейнере управляемой памяти в Weblogic и просто надеюсь, что это не убьет нашу систему.Пожалуйста, отвечайте только:
- Если вы точно знаете, это невозможно сделать (некоторые ссылки объясняют, почему было бы неплохо)
- Если вы знаете как это сделать
- Если у вас другое решение, которое примерно выполняет то, что я хочу сделать (не выдавая два запроса)