所以我不知道什么时候,但显然Chrome已经改变了浏览器内部查看PDF的情况。在Firefox或IE工作中查看这些内容;这似乎是一个仅限Chrome的问题。
截至目前,我这样做是怎么回事。用户将数据POST到服务器,这对PDF填充有一定作用,并将PDF发送回浏览器。我们正确使用Content-Disposition
,Content-Length
和Content-Type
标题(我假设):
Content-Disposition: "inline; filename=\"some-pdf.pdf\""
Content-Length: "1860799"
Content-Type: "application/pdf"
Chrome拒绝使用浏览器内的PDF查看器加载这些文件有什么特定原因吗?
在POST到服务器时,Chrome似乎没有加载内联文件。
工作示例:
var express = require('express');
var fs = require('fs');
var app = express();
app.listen(3000, function() {
console.log('Listening on http://localhost:3000');
});
app.get('/', function(req, res, next) {
fs.stat('./some-pdf.pdf', function(e, stats) {
if(e) throw e;
var stream = fs.createReadStream( './some-pdf.pdf' );
res.setHeader('Content-disposition', 'inline; filename="some-pdf.pdf"');
res.setHeader('Content-Length', stats.size);
res.setHeader('Content-type', 'application/pdf');
stream.pipe(res);
});
});
非工作示例:
var express = require('express');
var fs = require('fs');
var app = express();
app.listen(3000, function() {
console.log('Listening on http://localhost:3000');
});
app.get('/', function(req, res, next) {
res.send('<form method="POST"><input type="submit", value="Get PDF"></form>');
});
app.post('/', function(req, res, next) {
fs.stat('./some-pdf.pdf', function(e, stats) {
if(e) throw e;
var stream = fs.createReadStream( './some-pdf.pdf' );
res.setHeader('Content-disposition', 'inline; filename="some-pdf.pdf"');
res.setHeader('Content-Length', stats.size);
res.setHeader('Content-type', 'application/pdf');
stream.pipe(res);
});
})
答案 0 :(得分:1)
这是Chrome PDF Viewer错误。当您尝试保存PDF时,插件有时会重新请求保存页面。如果它是HTTP Post,则会出现内部错误,并且保存失败。
可以在这里看到:https://code.google.com/p/chromium/issues/detail?id=224520