由网友(把怪.)分享简介:我使用的是PHP库文件上传到我的水桶。我已经设置了访问控制列表,公共读写,它工作正常,但文件仍然是私有的。 我发现,如果我受让人改变每一个人,它使文件公开。我想知道的是如何让我的所有对象的默认承授人在我的水桶被设置为所有人。还是有另一种解决方案,在默认情况下使文件公开? code我现在用的就是如下:公共静态函数putO...
我使用的是PHP库文件上传到我的水桶。我已经设置了访问控制列表,公共读写,它工作正常,但文件仍然是私有的。
我发现,如果我受让人改变每一个人,它使文件公开。我想知道的是如何让我的所有对象的默认承授人在我的水桶被设置为所有人。还是有另一种解决方案,在默认情况下使文件公开?
code我现在用的就是如下:
公共静态函数putObject($输入,$桶,$ URI,$ ACL =自:: ACL_PRIVATE,$ metaHeaders =阵列(),$ requestHeaders =阵列()){
如果($输入===假)返回false;
$其余=新S3Request('PUT',$桶,$ URI);
如果(IS_STRING($输入))$输入=阵列(
'数据'=> $输入,'大小'=> strlen的($输入),
'的md5sum'=> base64_en code(MD5($输入,真))
);
// 数据
如果(使用isset($输入['计划生育']))
$ REST-> FP =安培; $输入['计划生育'];
ELSEIF(使用isset($输入['文件']))
$ REST-> FP = @fopen($输入['文件'],RB);
ELSEIF(使用isset($输入['数据']))
$ REST->数据= $输入['数据'];
//内容长度(需要)
如果(使用isset($输入['大小'])及和放大器; $输入['大小']> = 0)
$ REST->大小= $输入['大小'];
其他 {
如果(使用isset($输入['文件']))
$ REST->大小=档案大小($输入['文件']);
ELSEIF(使用isset($输入['数据']))
$ REST->大小=的strlen($输入['数据']);
}
//自定义请求头(内容类型,内容处置,内容编码)
如果(is_array($ requestHeaders))
的foreach($ requestHeaders为$ H => $ V)$ REST-> SetHeader可以($小时,$ V);
ELSEIF(IS_STRING($ requestHeaders))//支持传统的contentType参数
$输入['类型'] = $ requestHeaders;
//内容类型
如果(!使用isset($输入['型'])){
如果(使用isset($ requestHeaders ['Content-Type的']))
$输入['类型'] =&放大器; $ requestHeaders ['内容类型'];
ELSEIF(使用isset($输入['文件']))
$输入['类型'] =自我:: __ getMimeType($输入['文件']);
其他
$输入['类型'] ='应用程序/八位字节流;
}
//我们需要发布与内容长度和内容类型,MD5是可选
如果($ REST->大小> = 0&功放;及($ REST-> FP ==虚假|| $ REST->!数据== FALSE)){
$ REST-> SetHeader可以(内容类型,$输入['型']);
如果(使用isset($输入['的md5sum']))$ REST-> SetHeader可以(内容-MD5,$输入['的md5sum']);
$ REST-> setAmzHeader(X-AMZ-ACL',$ ACL);
的foreach($ metaHeaders为$ H => $ V)$ REST-> setAmzHeader(X-AMZ-元 - '$ H,$ V);
$ REST-> GETRESPONSE();
} 其他
$ REST->响应 - >错误=阵列('code'=大于0,'信息'=>'缺少输入参数');
如果($ REST->响应 - >错误===假放;&安培; $ REST->响应 - >!code == 200)
$ REST->响应 - >错误=阵列('code'=> $ REST->响应 - > code,'消息'=>意外的HTTP状态');
如果($ REST->响应 - >!错误== FALSE){
trigger_error(sprintf的(S3 :: putObject():[%S]%S,$ REST->响应 - >错误['code'],$ REST->响应 - >错误[ '消息']),E_USER_WARNING);
返回false;
}
返回true;
}
解决方案
如果你想在默认情况下所有对象公开,最简单的方法就是做一个槽的
相关推荐
最新文章