php - 从 aws s3 存储桶在 Web 浏览器中显示文件内容
问题描述
这是我想要做的是在当前位于 S3 存储桶上的浏览器中显示文件内容。
通过使用以下代码,我可以从 S3 存储桶中获取文件内容,
$contents = file_get_contents("/var/general/".$_GET['id']);
接下来,我正在获取文件信息,但是,当我尝试读取文本文件时,我收到了无法加载 pdf 文档错误或收到错误消息。
这是我尝试读取文件的方式:
header('Content-Type: ' . $fileInfo['RevUserFileType']);
header('Content-Length: ' . $fileInfo['RevUserFileName']);
readfile($contents);
此外,根据文件类型,我收到以下消息: readfile() 期望参数 1 是有效路径。
我怎样才能让文件在网页中查看,什么会导致这个问题?我可以访问 S3 存储桶,但由于某种原因,我无法在 Web 浏览器中查看文件的内容。
解决方案
我找到了解决方案。
导致问题的是以下行。
$contents = file_get_contents("/var/general/".$_GET['id']);
所以我做了以下更改:
$contents = "/var/general/".$_GET['id']";
并添加了以下代码:
header("ContentEncoding: 'base64'");
推荐阅读
- excel - 宏将行移动到另一个工作表但忽略新工作表中的公式
- pandas - 熊猫似乎两次合并相同的数据框
- angular - for 循环的 Angular jasmine 测试用例(错误:预期 $.length = 11 等于 3)
- batch-file - 在批处理文件中,如何抑制 FOR /F 命令中的命令的输出
- firebase - EACCES:全局安装 NPM 包时权限被拒绝
- jpeg - PDFBox - java.lang.UnsatisfiedLinkError: jpeg(库已经加载到另一个类加载器中)
- flutter - Flutter 如何拥有多个列表
- python - 从 shell 获取输入时 Pygame 窗口崩溃
- spring-boot - 跟踪对 Spring Boot 应用程序的传入请求
- javascript - 为 Sequelize 创建中间 BaseModel 类