强制从 s3 亚马逊服务器下载

2024-03-04

我一直在开发一个新的网络应用程序,它依赖于亚马逊S3服务器作为存储系统,以及代码点火器作为 PHP 框架。

我需要在单击链接时强制下载文件。原始网址如下所示:

http://www.our-web.com/download/do/1.jpg

它会生成一个指向 Amazon S3 服务器上实际文件的临时签名 URL,如下所示:

http://main_bucket.s3.amazonaws.com/post/1/1.jpg?AWSAccessKeyId=AKIAJEOQKYPKC3CCU5RA&Expires=1305395426&Signature=iuzCdA22gImLK192%2BMAhk8OkAY8%3D

我需要在用户单击链接时立即开始从真实的 Amazon URL 下载文件。

我现在有两种方法可以做到这一点:

  1. Use redirect()这将打开文件而不是下载它;或者
  2. 将标头更改为以下代码:

    header('Content-type: application/force-download');
    header('Content-Disposition: attachment; filename=' . $file_name);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 4000');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: ' . filesize($generated_file));
    
    readfile($generated_file);
    

不幸的是,这两种方法都对我没有帮助。第二种方法导致下载来自我的网站,而不是直接来自亚马逊。

如何强制直接从 Amazon S3 服务器下载文件,而不是从我的网站下载?


您只需在 S3 中的文件上设置正确的标头,即可强制浏览器下载而不是打开文件。设置这些:

Content-Disposition: attachment; filename=FILENAME.EXT
Content-Type: application/octet-stream

将文件上传到 S3 时,您需要设置它们。随着php SDK http://aws.amazon.com/sdkforphp/你会用create_object http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/create_object.

或者您可以在上传后设置这些'更改内容类型' http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/change_content_type or by 将文件复制到自身 http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/copy_object在 S3 中并设置正确的标头。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

强制从 s3 亚马逊服务器下载 的相关文章

  • 如何在 Python 中包含 PHP 脚本?

    我有一个 PHP 脚本 news generator php 当我包含它时 它会抓取一堆新闻项并打印它们 现在 我在我的网站 CGI 中使用 Python 当我使用 PHP 时 我在 新闻 页面上使用了这样的内容 为了简单起见 我删掉了这个
  • 自定义 WP 主题时,我应该将导航栏放在“”标签之前还是之后?

    我正在通过制作子主题来自定义 WP 主题 我将 Bootstrap 中的导航栏放入子主题目录中的 header php 文件中 但是 我不确定在哪里放置导航栏代码 我可以把它都放在前面and之后标记成功 例如 无论我选择哪一个 导航栏都显示
  • .htaccess 异常导致主目录出现问题

    这是我的目录结构 localhost or livehost app bootstrap public vendor code demo 这是我的 htaccess
  • 如何将 HTML 转换为 Markdown?

    我有一个类似 stackoverflow 的网站 有一个文本区域 人们可以在其中写答案 我用这个 PHP 库 http parsedown org 转换降价 我的意思是我使用该函数来转换 italic to i italic i inclu
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 如何在类似 MVC 的页面中加载基于漂亮 URL 的类?

    我想请教一些关于如何解决这个问题的提示 我正在尝试构建自己的 MVC 网站 我了解了 URL 的基础知识 http example com blog cosplay cosplayer expo today 博客 gt 控制器cosplay
  • 限制自己超载外部 API 的速率

    我发现了很多信息和脚本示例 展示了如何对 API 用户进行速率限制 但我无法找到任何示例来说明在施加这些限制时如何对您自己的 API 请求进行速率限制 我总是用诸如以下的代码来限制我的脚本sleep or usleep命令 但感觉这是一种低
  • PHP:读取字体文件的 TrueType/OpenType 元数据

    如何阅读字体详细信息 例如 字体在其元数据中包含版权 姓氏 设计者 版本等信息 我还希望脚本能够计算文件中的字形数量 并返回字体支持的语言 例如 典型的字体可能包含西方语言 瑞典语和罗马语言支持 并具有数百个字形 它应该支持 truetyp
  • WordPress 分页自定义帖子类型

    我有一个名为 新闻 的页面 使用页面模板page newslist php 它应该显示来自自定义帖子类型 也称为新闻 的帖子 我意识到两者具有相同的名称会导致问题 因此在注册自定义帖子类型时 我进行了重写以将其与页面区分开来 rewrite
  • 使用 XSLT 将 XML 转换为 SQL

    由于我无法控制的原因 我将获得一个 XML 文件和一个 XSLT 文件 该文件可以将 XML 文件转换为 SQL 代码或错误 现在让我们假设我们可以信任提供 XML 文件的人不会在 XML 中包含危险的构造 我什至不知道是否应该使用 Sim
  • 为什么我的 if 语句没有按我预期的方式工作?

    我正在尝试实现以下目标 我向我的 SQL 数据库询问使用SELECT FROM subjects 这样做之后我要求使用数组mysqli fetch assoc 在那之前一切都很好 现在的问题是 当我尝试在每个循环中修改 genero 的值
  • apache_request_headers() 与 $_SERVER

    据我所知 apache request headers 提供与以下相同的信息 SERVER 但按键略有不同 为什么有人应该使用apache request headers 而不仅仅是从那里获取这些信息 SERVER 我在 Centos 上使
  • 如何仅使用 PHP5 RecursiveDirectoryIterator 类递归显示具有特定文件类型的文件夹和子文件夹

    您好 我正在尝试使用 FilterIterator 上的扩展来获取 RecursiveDirectoryIterator 类 但由于某种原因 它仅在根目录上进行迭代 我的代码是这样的 class fileTypeFilter extends
  • Sonata DateTimePickerType 类默认日期显示错误的日期时间格式

    我陷入困境 我不知道如何使用 sonata DateTimePickerType 类正确设置默认日期和时间 我尝试了不同的方法 但到目前为止 没有一种方法没有帮助 在下面的截图中 help 键显示正确的日期和时间 但是当我使用 dp 默认日
  • MVC 模式中的验证层

    验证模型将使用的数据的最佳位置在哪里 例如 考虑登记表 我们有一些来自注册表的数据 那么验证这些数据的最佳位置在哪里 我们应该通过 if 语句或特殊的验证器类来检查每个数据 这意味着大量的编码 所以我想了解在哪里可以做到这一点 在控制器中
  • suhosin.mt_srand.ignore 在 PHP 中一致洗牌数组的解决方法?

    我有一个 PHP 脚本 需要随机化一个具有一致结果的数组 这样它就可以向用户呈现前几个项目 然后如果他们愿意 他们可以从同一个打乱的集合中提取更多结果 我目前使用的是这个 基于我相信的 Fisher Yates 算法 function sh
  • 从支付网关重定向回时用户会话丢失

    我已将 Cyber source 配置为我的支付网关 我能够导航到 cybersource 并进行付款 并能够成功重定向回该网站 我也可以取消付款并重定向回我的网站 我收到来自支付网关的响应 但是 用户在从支付网关重定向回来时会被注销 我正
  • 保存多对多关系,同步/附加不存在?

    我有以下两个多对多关系的模型 use Illuminate Database Eloquent Model class Permission extends Model The database table used by the mode
  • 检查 $_POST 数据

    我正在对表单进行一些垃圾邮件检查 下面的代码在我的本地主机上正常工作 如果为 true 则重定向到 google com 但是 当它在生产服务器上时却不起作用 执行脚本的其余部分并且不重定向到 Google com if POST SERV
  • php 数组中出现意外的 json 输出结构

    我正在尝试转换动态数据 如何从 PHP 获取此 JSON JSON 122240cb 253c 4046 adcd ae81266709a6 item 0 3 这就是我所做的 但它不起作用 PHP json array 122240cb 2

随机推荐

  • 如何在 Android 中的活动/屏幕之间切换

    我的第一个活动 Xm
  • IMetaDataImport::ResolveTypeRef 方法的问题

    我有自己的 NET 应用程序调试器 它使用IMetaDataImport界面 http msdn microsoft com en us library ms230172 aspx 当我打电话时ResolveTypeRef方法 我总是得到N
  • 将几个参数传递给 lapply 的 FUN(以及其他 *apply)

    我有一个关于在使用时将多个参数传递给函数的问题lapply in R 当我使用 lapply 的语法时lapply input myfun 这很容易理解 我可以这样定义 myfun myfun lt function x doing som
  • C# 中的异步/等待和并行 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 列数将图像减半

    我在页面上有很大一部分文本 当屏幕更大时 我可以使用媒体查询来使文本形成列 然而 当我这样做时 有些照片没有完全进入一栏 无论出于何种原因 它都会分割照片并将其一部分显示在一列的底部 并将其余部分显示在下一列中 div 也会发生这种情况 如
  • 如何更新 Windows 最新托管运行程序的 github 操作工作流程文件中的 PATH

    我目前正在尝试将 GitHub 操作工作流程添加到存储库中 要进行 C CMake swig python 开发 即本机 python 库开发 我需要下载并安装 swigwin 并将其提供在PATH 不幸的是 似乎 env Path 在下一
  • 在不影响CloudKit正确性的情况下执行持久历史记录清除的正确方法是什么?

    目前 我们正在使用本地CoreData with CloudKit特征 通过使用NSPersistentCloudKitContainer 为什么我们启用持久历史跟踪功能 由于问题描述于https stackoverflow com a 7
  • 如何在不使用 nginx 的情况下通过 ingress 启用 CORS?

    我正在尝试使用 Kubernetes 设置 RESTful API 应用程序 我有一个准系统设置 其中包含集群 静态 IP 地址 使用 NodePort 类型的公开服务部署的应用程序以及配置了 SSL 托管证书的入口 我需要启用 CORS
  • 如何正确地将sqlite框架添加到Xcode项目中?

    我正在尝试将 SQLite 添加到我的项目中 我检查了构建阶段选项卡下的目标依赖项 它是空的 这是真的 我收到以下错误 无法运行命令 Ld SQLite 该目标可能包括其自己的产品 我正在使用 swift 3 你能帮我么 提前致谢 我目前不
  • 在 HSQLDB 2.0.0-rc8 中选择下一个序列值的“正确”方法

    假设我有一个序列 称为 TEST SEQ 选择下一个值的正确方法是什么 这不起作用 select next value for TEST SEQ 可能是因为它需要一个 FROM 子句 在休眠中查看 HSQLDialect getSequen
  • 帕拉米科。按修改时间获取文件

    localpath U utime sftp stat TestBTEC st mtime last modified datetime fromtimestamp utime if datetime now last modified l
  • 使用类为第三方库创建类型

    我有一个第三方库 它具有以下 ES6 类签名 class Machine constructor options static list callback create options callback 我尝试为此类创建类型声明 但出现一些
  • 在 Vim 中打开 NERDTree 和 Tlist 并排放置

    我正在寻找一种方法来 自动 打开左侧正上方的 NERDTree 和 Tlist 以便每个插件占据屏幕高度的一半 我已经找到了这个问题 https stackoverflow com questions 6005874 opening a w
  • Servlet 中的 JSF 托管 Bean

    有没有办法从 servlet 访问 JSF 托管 bean 在 Servlet 中 您可以通过以下方式获取请求范围的 beans Bean bean Bean request getAttribute beanName 和会话作用域的 be
  • Java 数组效率

    我不能 100 确定该机制正在发挥作用 因此我决定在此发帖以进一步澄清 我正在做一个项目 应该用Java处理大量数据 它必须是Java 我希望它尽可能高效 我所说的高效是指内存和计算速度应该放在第一位 可读性应该放在第二位 现在我有两种方法
  • 使用图像(宽高比填充)和视频制作 AVMutableComposition 以适合宽高比

    我正在尝试使用尺寸始终为 CGSize 375 667 的图像制作新视频 但视频尺寸不同 且 contentMode 为 aspectFit 问题是我无法弄清楚如何使整个视频组合具有正确的尺寸 即图像尺寸 而是视频的自然尺寸和一堆奇怪的结果
  • 批量使用 PowerShell 命令的问题

    我使用 PowerShell 命令从云下载 zip 文件 该命令在 PowerShell 和命令行中都能正常工作 但是 如果我将命令行中的命令插入批处理脚本中 则只会下载 html 为什么该命令在命令行中可以正常工作 但在批处理文件中却不能
  • GET 文件上传如何工作?

    有谁知道怎么办GWT文件上传有效吗 我知道关于FileUpload小部件以及如何使用它 我想知道它的内在机制是什么 我们无法从中获取文件内容FileUpload客户端中的小部件以及它如何发送到服务器 我用谷歌搜索但没有得到解决方案 提前致谢
  • 仅当活动未显示时才显示通知

    我有一个想要处理的后台任务 问题是 当任务完成时 我想调用一个新的 Activity 来向用户显示结果 前提是我的主 Activity 正在显示 否则我只想发送一个通知 以便用户可以看到该操作已完成 并且可以随时打开它 我正在考虑使用一个服
  • 强制从 s3 亚马逊服务器下载

    我一直在开发一个新的网络应用程序 它依赖于亚马逊S3服务器作为存储系统 以及代码点火器作为 PHP 框架 我需要在单击链接时强制下载文件 原始网址如下所示 http www our web com download do 1 jpg 它会生