浏览器请求文件,服务器下载 pdf,浏览器在 iframe 中显示 pdf

Browser requests file, server downloads pdf, browser displays pdf in iframe

本文关键字:pdf 浏览器 显示 iframe 下载 请求 文件 服务器      更新时间:2023-09-26

这就是我想做的: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 查看器插件,否则浏览器将要求下载提示。