2013-09-09 2 views
0

Это то, что я хочу сделать: 1) браузер инициирует запрос ajax на сервер, запрашивая pdf-файл. 2) сервер загружает pdf-файл и возвращает pdf-файл для отображения. 3) браузер отображает загруженный pdf-файл в ранее существовавшем iframe.Запрос на загрузку браузера, загрузка файлов на сервер pdf, отображение в браузере pdf в iframe

Ниже приведен мой код. Он, кажется, останавливается на части iframe, но я подозреваю, что он не отправляет PDF правильно.

Browser файл index.html:

var uri = '/viewer/loaddrawing/'; 
$.getJSON(uri, {key:value}, function(data, jqXHR){ 
    document.getElementById("iframetitle").src = uri;    
}); 

Django сервер views.py файл:

import requests 
def loaddrawing(request): 
    value = request.GET.get('key') 
    #the key is used to generate a unique url, but for test purposes lets use the url shown below 
    url = "http://cbmeturkey.com/media/109/test.pdf" 
    response = urllib2.urlopen(url) 
    some_data = response.read() 
    return HttpResponse(some_data, mimetype='application/pdf') 

EDIT:

Я один вопрос остальные: Я не хочу использовать ниже код в моем файле index.html в любом случае, потому что я хочу загрузить pdf-файл и использовать его снова. Причиной этого является то, что моя страница index.html использует javascript для отображения и скрытия iframe, и с помощью приведенного ниже кода файл pdf загружается при каждом показе iframe.

var uri = '/viewer/loaddrawing/'; 
document.getElementById('iframetitle').src = uri + '?key=' + value; 

РЕШИТЬ: выше проблема была решена после того, как стороны от Аугусто, и следующий код index.html, который загружает PDF только один раз, хотя уведомление, что теперь я сейчас модифицирования DIV (названный «divtitle»), а не IFrame:

var uri = '/viewer/loaddrawing/' + '?key=' + value; 
var htm = '\<iframe src="' + uri +'" onload="downloadComplete()">\</iframe>'; 
document.getElementById('divtitle').innerHTML = htm; 
+0

Кажется, что это смешано с litte: Я правильно понимаю: вы хотите сделать запрос на сервер, передав некоторую ценность. С помощью этого значения создается уникальный URL-адрес. При запросе этого URL-адреса можно извлечь pdf-файл. У вас должно быть два обработчика на сервере, не так ли? – thertweck

+0

вы правильно понимаете - pdf является внешним для сервера, поэтому мне нужно получить его на стороне сервера. В противном случае я не понимаю, что вы подразумеваете под двумя обработчиками. Во всяком случае см. Отредактированный вопрос выше. – user2104778

ответ

1

Возможно, что вы имели в виду просто:

var uri = '/viewer/loaddrawing/'; 
document.getElementById('iframetitle').src = uri + '?key=' + value; 

Там нет JSON участвует, поэтому iframe ш плохо получить PDF напрямую. Однако обратите внимание, что клиент должен иметь плагин для просмотра PDF-файлов, иначе браузер запросит приглашение загрузки.

+0

Большое вам спасибо, но см. Отредактированный вопрос выше. Если вам нравится, я могу принять этот ответ и задать новый вопрос по уточненному вопросу. – user2104778

+1

Первой проблемой, по-видимому, является клиентская сторона (то есть плагин): http://blogs.adobe.com/dmcmahon/2012/08/21/acrobat-insumen-data-for-an-image- error-after-update-to-10-1-4-or-9-5-2/ –

+1

Что касается второй проблемы, вы бы не решили ее, сделав вызов 'getJSON' в любом случае, так что вам нужно логику, чтобы загрузить файл только один раз. (например, не делать это onclick, а загружать). –

Смежные вопросы