【问题标题】:How to offer large audio files for download after payment付款后如何提供大型音频文件供下载
【发布时间】:2011-01-28 03:09:59
【问题描述】:

我想在用户完成 PayPal 交易后在我的网站上提供音频文件供下载。它的商业部分已经编写完毕并且可以运行了——该站点是用 PHP 和 Zend 框架构建的。

为了不产生大量存储和带宽费用,我希望将文件托管在 Amazon S3 等服务上。但是,我不确定这是否适合我的要求。一旦 PayPal 交易完成,我想为用户分配某种唯一的 id 密钥,将他们发送到他们输入密钥的位置,并提供他们购买的文件以供下载。然后密钥会过期。

我可以编写代码来生成、存储和删除密钥。我的问题是:如何保护/隐藏存储在 Amazon S3 上的文件,然后将其提供给授权用户下载,其 URL 随后变为无效,同时还直接从 Amazon 传输文件,而不是通过我的服务器?

这可能吗,还是我需要其他解决方案?

【问题讨论】:

    标签: php zend-framework paypal amazon-s3


    【解决方案1】:

    Amazon S3 具有“预签名 URL”功能,允许您构建 URL 以访问受保护的内容,但有时间限制。见the Query String Request Authentication Alternative documentation

    【讨论】:

    • 感谢 Andrew - 这看起来是正确的做法。我正在考虑扩展 Zend_Service_Amazon_S3 类以提供此功能(创建和签署具有到期日期的 URL)。你知道有没有其他人已经这样做了?
    【解决方案2】:

    诚然,我对 Amazon S3 知之甚少,但是如果您将文件存储在 S3 中的数据库中并编写一个页面,该页面将在给定正确密钥的情况下从数据库中提供文件。然后,您所要做的就是在 S3 上发布一个 Web 服务,您可以从您的网站调用该服务来授权给定的密钥,然后将您的用户重定向到提供该文件的页面。

    【讨论】:

    • 不幸的是,S3 不能这样工作——它是一个静态存储,不允许编写脚本。亚马逊也有云计算 (EC2),但这是一项单独的服务。
    • @Andrew Aylett:哦,我明白了。那我的回答就没有意义了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 2021-12-26
    • 2015-09-05
    • 2019-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多