PDF下载损坏 / HTTP标头问题
PDF download corrupted / HTTP header problems
我在一个应用程序中有一些旧代码,用于pdf文件下载(PDF文件约为350-400kb尺寸),最近我们抱怨(大约1%的客户)说pdf下载失败,损坏/损坏的文件错误。
这是代码(C 应用程序)设置标头的段落
String header;
header.append("Content-type: application/force-downloadrn");
header.append("Content-Transfer-Encoding: Binaryrn");
header.append("Content-length: %drn", filebuf.length());
header.append("Connection: Closern");
header.append("Content-disposition: attachment; filename=%srnrn", filename_to_download.chars());
字符串类和附加方法仅用于示例。
我理解上面的标头不是触发pdf文件下载的最佳方法(我已经通过" content-type application/ocket-stream and content-disposition:actactment; filename = fileName = example.pdf"来简化标头,并且似乎它为我工作)。
,但我无法理解为什么上述原始代码不应工作1%的时间。
我试图了解浏览器/Adobe组合,但似乎这里没有模式,是的,很少有客户在更改为" Chrome浏览器"时,它大部分时间都可以使用。
任何指针?
奋斗几天后终于弄清楚了这里发生了什么。
我们将内容长度设置为标题中的缓冲区大小(pdf文件大小),并将此数据发送给客户端,但是在Apache Module Mod_gzip/mod_deflate之间,将其发送到客户端,正在压缩数据缓冲区,到达客户端/浏览器的内容是"内容" - 长度:100个字节"但实际数据为60-70字节。
并非每个浏览器都抱怨此不匹配,但某些浏览器将此视为致命错误,并显示消息"无法下载文件"(我们在Win8/IE10和Win8/IE11中经常看到此问题,可能还有其他一些安全设置也是在浏览器上引起的!)。
对于修复程序,我们从标题中删除了"内容长度"。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 使用 Winsock2.h C++向不和谐 API 发送 HTTP 请求时出现问题
- 在C ++ ASIO中,如何为HTTP或HTTPS创建相同的套接字对象(接口/抽象问题?
- Waveshare 电子纸 ESP32 板上的 HTTP 客户端管理问题
- PDF下载损坏 / HTTP标头问题
- C++HTTP GET请求问题
- 提升 HTTP 服务器问题
- 问题4.8.4如何检查http服务器上是否存在文件