php s3预先签署的网址没有sdk
问题描述:
我正在使用这个类来生成一个包含策略部分的直接上载表单。php s3预先签署的网址没有sdk
https://www.designedbyaturtle.co.uk/2015/direct-upload-to-s3-using-aws-signature-v4-php/
的上传正在努力,但我希望能够显示从URL网站上的文件,为用户未做文件公开。
我知道SDK有一个简单的方法,但我希望我可以用现有的代码来做,因为这已经创建了策略。我想知道什么是从头创建此网址的步骤?将整个臃肿的SDK包含在一个函数中似乎过分了。
答
创建S3预签名的URL实际上非常容易获得GET请求。 PUT相当容易,但POST很复杂,需要一个策略。
挑战在于创建签名代码。亚马逊支持两个版本v2和v4。 v2正在被淘汰。代码有点复杂。
如果您只为GET请求创建预签名URL,请编写自己的代码。对于其他任何事情,我都认真推荐使用SDK。
下面是使用不带AWS SDK的PHP使用S3V4预先签署S3 URL的源代码的链接。
答
我解决它通过使用这两个类,并对其进行修改一下,以便有两种功能的getURL类和getform而不是使用API,这些V4的签名工作的伟大。
getform:
https://www.designedbyaturtle.co.uk/2015/direct-upload-to-s3-using-aws-signature-v4-php/
的getURL:
https://gist.github.com/anthonyeden/4448695ad531016ec12bcdacc9d91cb8
我说你想要的http://docs.aws.amazon.com/AmazonS3/开始latest/API/Welcome.html,并找到关于如何创建签名URL的REST API。虽然您的SDK大小膨胀可能是一个问题,但它的自动加载非常棒,并且内存影响应该很低。 – Scuzzy
为直接上载签名的*策略*与为预先签名的URL签名的*规范请求*完全不同。但是,该示例中有用于构造签名密钥的有用代码...因此这是一个有用的开始。 –