如果我生成的预签名URL已过期,我是否应该执行get_headers()(在PHP中)以查看是否抛出403Forbidden错误,否则使用同一个网址?或者这是一个坏主意,因为它是一个不必要的GET请求?我应该总是每次都重新生成一个新的预签名URL吗?我有点困惑,因为似乎没有太多关于此的信息。 最佳答案 URL有它的过期时间。签名版本2https://bucket.s3.amazonaws.com/foo.txt?AWSAccessKeyId=AKIAABCDEFGHIJK&Expires=1508608760&Signature=x
这是我的第一个PHP项目,所以我真的完全不懂PHP。我想做的是使用PHPS3类将文件上传到S3存储桶。一个示例代码片段昨天可以正常工作,但当我今天再次开始使用它时,几乎完全相同的代码停止工作了。现在我只收到putObject函数返回的以下错误:警告:S3::putObject():RequestTimeTooSkewed请求时间与当前时间之间的差异太大。在/vagrant/LifeInYourWay/S3.php第222行我在一些地方读到服务器时间可能导致错误,所以我将服务器时间更改为America/New_York,但仍然得到同样的结果。我的PHP代码是:if(!class_exis
我正在努力使用AmazonS3SDK重命名同一存储桶中的文件。我指的是copyobject在API文档中。这是我的调用,但它一直返回“指定的存储桶不存在”。$clients=S3Client::factory(array('key'=>'key','secret'=>'secret'));try{$result=$clients->copyObject(array('ACL'=>'private',//Bucketisrequired'Bucket'=>'david1982.audio',//CopySourceisrequired'CopySource'=>'mp3/music.mp
我的Laravel应用程序需要将存在于多个存储桶中的文件同时处理到单个session中。因此,我找不到将当前存储桶更改多次的方法,因为我的.env文件是这样的:S3_KEY='MY-KEY'S3_SECRET='MySeCret'S3_REGION='us-east-1'S3_BUCKET='my-first-used-bucket'我在某个地方找到了可以这样做的地方:Config::set('filesystems.disks.s3.bucket','another-bucket');但它只工作一次。我需要的是这样的:Storage::disk('s3')->put('/bucket
我正在构建一个PHP网站,该网站会将其内容文件保存在AmazonS3上。网站文件(带有PHP代码)托管在传统服务器上。用户将在网站上注册,注册并登录后,他们将可以访问S3上的文件。问题是,如何只让登录用户下载文件,不让其他人下载?AWSIAM是否必须以某种方式参与?我不想要过期的URL。我只想向特定用户授予文件访问权限,并且我不希望他们在任何时间段内与其他任何人共享链接。将来我还想限制注册用户对文件的访问权限——根据用户帐户的类型,用户可以访问不同的文件。提前感谢回复! 最佳答案 这可以做到...我使用ROR而不是PHP,我的应用程
我正在使用AWSPHPSDK将文件上传到S3,然后使用ElasticTranscoder对其进行转码。首先一切正常,putobject命令覆盖了s3上的旧文件(始终命名相同):$s3->putObject(['Bucket'=>Config::get('app.aws.S3.bucket'),'Key'=>$key,'SourceFile'=>$path,'Metadata'=>['title'=>Input::get('title')]]);但是在创建第二个转码作业时,出现错误:Thespecifiedobjectcouldnotbesavedinthespecifiedbucket
我正在使用S3接受用户直接上传到S3。因此,我将使用预签名的url。上传成功后,AWSLambda会确认上传的文件是图片,然后客户端会告诉我的服务器他已经上传完成。然后我的服务器将检查该文件是否存在于S3中(如果Lambda检测到无效图像,则会将其删除)。如果是,则应用程序逻辑的其余部分将随之而来。但是,这个机制有一个漏洞。在告诉我的服务器他已完成上传(并最初传递了一个有效文件)后,用户可以使用相同的url上传恶意文件。Lambda仍会删除文件,但现在我的服务器会认为文件存在,但实际上并不存在。有什么方法可以生成一次性上传的预签名url,或者是否可以强制使已生成但尚未过期的url失效?
是否有可供PHP访问AmazonS3的库,让我可以使用完全相同的代码来读/写S3存储桶或对本地文件执行相同的操作?我想使用S3,但我需要一种方法来在本地运行我的应用程序以进行测试。如果没有直接支持切换到本地文件系统的库,是否有一个以良好的OOP方式编写的库,以便我可以使用相同的接口(interface)制作它的本地文件系统版本?我正在使用Symfony2,所以如果有用于此的bundle,那将是一个加号,但我总是可以自己将其打包。更新我现在正在尝试制作一个bundle来执行此操作。我只需要“创建”、“存在”和“删除”操作,所以我创建了一个接口(interface)来处理它。然后我有一个“
当我想将图像上传到我的amazons3存储桶时遇到问题。我正在尝试上传大小为238KB的jpg图像。我在我的代码中放了一个try/catch来检查错误是什么。我总是收到此错误:Yourproposeduploadissmallerthantheminimumallowedsize我也尝试过使用1MB和2MB的图像,同样的错误......。这是我的代码:'key','secret'=>'secretkey',));//CreateanewmultipartuploadandgettheuploadID.$response=$client->createMultipartUpload(ar
我正在使用AmazonS3API上传文件,每次上传时我都会更改文件的名称。例如:狗.png>3Sf5f.png现在我得到了随机部分这样工作:functionrand_string($length){$chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";$size=strlen($chars);for($i=0;$i所以我将random_string设置为name参数:$params->key=rand_string(5);现在我的问题是这不会显示任何扩展名。因此文件将上传为3Sf5f而不是3Sf5