我正在开发一个带有表单的网页,该表单根据表单数据返回PDF文档。目前我使用HTTP响应字段
Content-Type: application/pdf
Content-Disposition: attachment; filename="foo.pdf"
但是,由于字段 Content-Disposition 是非标准的,并且在所有浏览器中都不起作用,我正在寻找不同的方法。我是否必须将PDF文档保存在服务器上?什么是作案手法?
编辑:通过"并不适用于所有浏览器"我的意思是,对于某些浏览器,文件名未设置为 foo.pdf 。例如,Dillo只是将默认文件名(在下载对话框中)设置为URL路径的基本名称(加上查询字符串)。
答案 0 :(得分:0)
我是否必须将PDF文档保存在服务器上?
没有。就HTTP客户端而言,服务器的内部工作方式对它完全不透明。它所看到的只是来自服务器的TCP字节流,只要它与指定的Content-Type
匹配,该流的生成方式并不重要。
只需在HTTP标题之后立即发送PDF即可。
因此,如果您想知道如何在不使用标题字段的情况下提供文件名:只需使用它扩充URL即可。即
之类的东西http://${DOMAIN}/${PDF_GENERATOR}/${DESIRED_FILENAME}
在HTTP服务器中添加重写规则以简单地省略文件名部分并重定向到
http://${DOMAIN}/${PDF_GENERATOR}
HTTP客户端看不到它,它看到的是一些以"文件名"结尾的URL,它可以将用户显示为保存的默认值。