我正在使用Google云存储托管我的网站,一旦用户选择了将要上传到服务器的图像,同时又将其获取,我就有了代码可以像Facebook一样上传封面图像。
我只授予该封面图像文件夹的完全访问权限,如果我给我提供了任何问题,例如黑客入侵。请给我一个建议,用我的方式好还是不好?
if (!is_dir($directoryName)) {
$oldmask = umask(0);
mkdir($directoryName, 0777);
umask($oldmask);
}
答案 0 :(得分:0)
我不认为在第一个位置使用这种方法甚至是不可能,因为Cloud Storage实际上没有目录,文件对象只会出现 由于其名称中包含'/'
字符而位于目录中,但是它们实际上位于与整个存储桶相对应的单个平面名称空间中。来自Object name considerations:
对象名称位于存储桶中的平面命名空间中,这意味着 不同的存储桶可以具有相同名称的对象。它也是 表示对象不位于存储桶的子目录内。 例如,您可以命名一个对象
/europe/france/paris.jpg
{em>出现paris.jpg
位于子目录中/europe/france
,但是对于Cloud Storage,该对象仅存在于 桶,并命名为/europe/france/paris.jpg
。
Access Control Options中介绍了在Cloud Storage中实施访问控制的正确方法。
对我来说,最吸引人的用于上传封面照片的似乎是使用Signed URLs,它允许访问仅限于单个文件/对象,并且访问时间有限,从而阻止了多个文件的上传(似乎是您的问题),并在该限制时间到期后覆盖上传的图片:
此页面概述了签名URL,这是一种机制 用于存储桶和对象的查询字符串身份验证。签名网址 提供一种方式来授予有时间限制的读取或写入访问权限给任何人 拥有网址,无论他们是否拥有Google 帐户。要了解如何创建签名URL,请阅读Creating Signed URLs with gsutil和Creating Signed URLs with a Program。
由于您打算从代码中执行此操作,因此您需要上面引用的第二种方法-本质上讲是将特定的POST请求发送到特制的URL。