php - readFile 和 file_get_contents 呈现损坏的 PDF 和 PNG 文件,但 JPG 很好
问题描述
我开发了一个允许用户将图片与文章相关联的应用程序。关联后,用户有两种可能,一种是下载关联的图片(全局为PDF、JPG或PNG文件),另一种是触发给自己的email。实际上,我有两个问题:-> 每当我尝试像这样获取文件内容时:
/**
* Renvoie le flux correspondant à l'URL passée en paramètre
* @param $url url complète du fichier à récupérer en HTTP
* @return string
*/
private function getHTTPFile($url) {
// Accès à un fichier HTTP avec les entêtes HTTP indiqués ci-dessus
return file_get_contents($url);
}
对于 PDF 或 PNG 文件,文件内容在系统上都是错误的,但对于 JPG 文件来说是可以的。-> 每当我下载文件时,问题都是类似的,PDF 和 PNG 文件都已损坏。
<?php
$linkLogo = $_REQUEST['_link'];
if ($linkLogo) {
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"". basename($linkLogo) ."\"");
if (ob_get_level()) {
ob_end_clean();
}
readfile ($linkLogo);
exit();
}
?>
我想知道问题是否不在于 PDF 和 PNG 都是二进制文件。
注意:我从插入到 Word 文件中的图像构建了一个 PDF 文件,它运行良好。问题可能是二进制文件的读取权限或apache服务器上的配置。请帮忙。
解决方案
我用 %20 替换了空格
<?php
$linkLogo = $_REQUEST['_link'];
if ($linkLogo) {
$linkLogo = str_replace(' ', '%20', $linkLogo);
header("Content-Description: File Transfer");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"". basename($_REQUEST['_link']) ."\"");
if (ob_get_level()) {
ob_end_clean();
}
readfile ($linkLogo);
exit();
}
?>
推荐阅读
- amazon-ec2 - 使用 docker 在 AWS ray 集群上启动一个简单的 python 脚本
- python - 无法使用 graphviz 渲染决策树
- kubernetes - kubectl 突然询问用户名
- python - `set_index()` 不排序索引?
- amazon-web-services - 修复“用户:匿名无权执行”
- node.js - 通过代理将客户端标头、isp、geo 转发到服务器
- python - for循环中的Python过滤器函数
- javascript - JavaScript 对象自动排序
- flutter - 如何在 Dart Flutter 中使日期选择器“确定”和“取消”按钮文本变黑?
- python - Django:将 HTML(包含表单)解析为字典