浏览器请求文件,服务器下载 pdf,浏览器在 iframe 中显示 pdf
Browser requests file, server downloads pdf, browser displays pdf in iframe
这就是我想做的:1)浏览器向服务器发起AJAX请求,要求提供PDF。2) 服务器下载 PDF,并返回 PDF 进行显示。3) 浏览器在预先存在的 iframe 中显示下载的 PDF。
下面是我的代码。它似乎停在 iframe 部分,但我怀疑它没有正确发送 pdf。
浏览器索引.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')
编辑:
我还有一个问题:无论如何,我都不想在我的索引.html文件中使用以下代码,因为我想实际下载 pdf 并再次使用它。原因是我的索引.html页面使用 javascript 来显示和隐藏 iframe,并且使用以下代码,每次显示 iframe 时都会重新下载 pdf。
var uri = '/viewer/loaddrawing/';
document.getElementById('iframetitle').src = uri + '?key=' + value;
解决:上述问题在奥古斯托的指示下得到解决,以下索引.html代码,该代码仅加载一次pdf,尽管请注意,现在我现在正在修改div(名为"divtitle")而不是iframe:
var uri = '/viewer/loaddrawing/' + '?key=' + value;
var htm = ''<iframe src="' + uri +'" onload="downloadComplete()">'</iframe>';
document.getElementById('divtitle').innerHTML = htm;
可能你的意思很简单:
var uri = '/viewer/loaddrawing/';
document.getElementById('iframetitle').src = uri + '?key=' + value;
不涉及 JSON,因此iframe
将直接获取 PDF。但是,请注意,客户端必须具有 PDF 查看器插件,否则浏览器将要求下载提示。
相关文章:
- 在浏览器中检测本机或第三方PDF插件
- 嵌入式pdf在Opera浏览器中总是名列前茅
- JavaScript代码,用于在浏览器中显示字节数组中的PDF文件(非base64编码)
- 使用无头浏览器Phantomjs打开PDF
- 使用 Selenium 在 IE9 浏览器中查找 PDF 文本
- 限制浏览器中显示的 PDF 的页数
- 等待图标,用于通过 ashx 处理程序在浏览器中加载 pdf
- 设置PDF页面的浏览器标题
- 如何从输入字段在浏览器中显示PDF文件
- 当浏览器请求部分内容范围请求时,如何检测pdf何时加载到iframe中
- 在浏览器中打开PDF禁用嵌入的Javascript
- 如何在浏览器中显示单词/ pdf二进制数据
- 加载PDF文件/网址在Safari浏览器中显示黑屏
- 提供下载pdf或在浏览器中打开的选项
- 如何在网络浏览器中显示MS-Excel和PDF文档
- 如何在不打开浏览器的情况下下载pdf文件
- 在所有浏览器中打印使用 jsPDF 创建的 PDF
- 如何保存.pdf没有 url 的浏览器窗口中弹出的文件
- 如何自定义PDF浏览器工具栏在Chrome
- 隐藏/禁用下载按钮在Chrome PDF浏览器