我可以通过以下服务下载pdf文件:
$app->options('/docDownload',function(){}); // This one just so you can accept OPTIONS
$app->get('/docDownload', function () use ($app){
$path = "working.pdf";
$res = $app->response();
$res['Content-Description'] = 'File Transfer';
$res['Content-Type'] = 'application/octet-stream';
$res['Content-Disposition'] ='attachment; filename=' . basename($path);
$res['Content-Transfer-Encoding'] = 'binary';
$res['Expires'] = '0';
$res['Cache-Control'] = 'must-revalidate';
$res['Pragma'] = 'public';
$res['Content-Length'] = filesize($path);
readfile($path);
});
但是,当我运行该服务时,我得到了以下响应:
%PDF-1.5
%���� 10 obj
要打开pdf,我需要用第二个鼠标按钮点击响应链接:
WS网址
然后选择“在新选项卡中打开”以打开pdf文件,看起来您正在运行该服务两次以获得一次pdf文件。
我想自动打开每个请求到WS的pdf文件。
这意味着每次您请求WS时,都应该返回直接在屏幕中打开的pdf文件。
有人能帮我修一下吗?
Tks
一个解决方案可能是不使用AJAX调用下载文件(看起来您是这样使用的)。这是您的页面下载页面的方式:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
var PDF_DOWNLOAD_URL = "{{ urlFor('PDFDownload') }}";
$(function(){
//Your old way
$("button.download-file").click(function(){
$.ajax({
method: "GET",
url: PDF_DOWNLOAD_URL,
headers: { 'x-my-custom-header': 'some value' },
success: function(data){
console.log("Data received:", data);
}
});
});
});
</script>
</head>
<body>
<button type="button" class="download-file">Download the document</button>
</body>
</html>
您的路线应以以下方式定义名称:
$app->get('/docDownload', function () use ($app){
$path = "working.pdf";
$res = $app->response();
$res['Content-Description'] = 'File Transfer';
$res['Content-Type'] = 'application/json';
$res['Content-Transfer-Encoding'] = 'binary';
$res['Expires'] = '0';
$res['Cache-Control'] = 'must-revalidate';
$res['Pragma'] = 'public';
$fileData = file_get_contents($path);
$base64 = base64_encode($fileData);
$response = array();
$response['pdf'] = $base64;
$response['customKey'] = "My Custom Value";
echo json_encode($response);
})->name("PDFDownload");
也许你需要使用正确的MIME类型,试试这个
$res['Content-Type']='应用程序/pdf';
我的python3代码: 它将内容保存在metadat.pdf但那不是pdf的真正内容,它是这个html页面: 任何帮助,我如何才能保存文件的真实内容,而不是这个html?它应该是真正的pdf,当我下载它是jsut这个html页面 更新: 当我使用Python会话时,从服务器的一个NSWER:
问题内容: 我正在构建一个应用程序,以从后端服务器下载PDF文件。我写了以下代码: 在后端服务器上,方法如下: 我从我的适配器调用此rest方法为: 通话结束后,我从此服务获得以下响应: 如何解析此响应为PDF文件并将其显示给用户?当我使用以下代码从应用程序中简单地调用此适配器方法时,当我右键单击适配器并选择运行为“调用移动适配器”时,也会收到此响应: 我在浏览器的控制台上得到了相同的响应,但是正
问题内容: 我想下载一个jQueryajax响应的pdf文件。Ajax响应包含pdf文件数据。。我的代码在下面给出,但是我总是得到一个空白的pdf。 问题答案: jQuery使用AJAX请求加载二进制数据时存在一些问题,因为它尚未实现某些HTML5 XHRv2功能 鉴于此,您拥有以下两种解决方案之一: 第一个解决方案是放弃JQuery并使用XMLHTTPRequest 与本地HTMLHTTPReq
问题内容: 我正在尝试使浏览器下载从ajax响应接收到的pdf文件。 受jquery ajax下载pdf文件启发,我模拟了如下单击/下载事件: 不幸的是,这仅适用于Chrome,不适用于Firefox + IE。当我尝试在最后两个浏览器中触发它时,没有任何反应。 由于从CMS继承,脚本和标记被放置在iframe中,但是我不确定这是否有影响。 关于如何针对所有现代浏览器进行优化的想法? 问题答案:
我正在实现一个ASP api来完成所有Docusign api流(获取登录信息,获取令牌,发送要签名的信封,下载信封文档)。现在我试图在浏览器中显示一个下载的文档,该文档是空白的。我正在从docusign接收文档字节内容,并试图将其呈现在iframe中。 docusign发送的PDF内容如下 更新 如果文档超过1页,则可以看到所有页面,全部为空白······
问题内容: 通过XHR请求下载pdf文件是否完全不可能?我知道已经有许多关于此主题的讨论,但可悲的是,我仍然对它们不满意。我正在使用AngularJs并使用其方法发出请求。它不返回任何文件下载弹出窗口。但是,如果在新的“浏览器窗口”中使用相同的URL进行点击,则会弹出一个窗口。我已经尝试了一个工作环境,并且可以正常工作,但是如果执行此操作,那么在下载弹出窗口准备就绪并出现之前,我无法显示等待的图像