我们正在尝试在我们的应用程序中实现存储桶系统。
FS-Bucket 也是由 Clever Cloud(我们的 PaaS/IaaS 提供商)提供的替代方案。
问题可能出在文档中,该文档根本没有很好地讲述或扩展该工具。
我们如何与我们的水桶正确交互?
使用文档中提到的
CC_FS_BUCKET
使用FTP(无聊且缓慢,但它有效)。
一旦您获取 FS Bucket,它将为您提供 HOST 和其他凭据。
这个想法是在我们需要使用存储桶的一个应用程序中设置环境变量。
类似这样的:
CC_FS_BUCKET=/my-bucket-folder:bucket-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-fsbucket.services.clever-cloud.com
这将挂载一个文件夹以直接访问我们的存储桶(** 在执行环境中 **)
一旦完成并部署,我们可以尝试像这个简单的例子:
<?php
try {
$file = $_GET['file'];
if (empty($file) || !isset($file)) {
echo "No file specified or included";
exit;
}
// check if file exists in current folder
if (file_exists(ROOT_DIR_APP . "/bucket-dir" . $file))
usingLocalFile(ROOT_DIR_APP . "/bucket-dir" . $file);
} catch (Exception $e) {
echo $e->getMessage();
}
function usingLocalFile($file = '')
{
$ext = pathinfo($file, PATHINFO_EXTENSION);
if (in_array($ext, ['png', 'jpg', 'jpeg', 'gif', 'bmp', 'svg']))
header('Content-Type: image/' . $ext);
else if (in_array($ext, ['pdf', 'json']))
header('Content-Type: application/' . $ext);
else
header('Content-Type: application/octet-stream');
header('Content-Disposition: inline; filename="' . basename($file) . '"');
header('Content-Length: ' . filesize($file));
header('Accept-Ranges: bytes');
@readfile($file);
echo "File Downloaded";
}
注意:除非您创建一个(git-ignored)文件夹来模拟存储桶,否则这在本地不起作用。
遵循this仅在文档中的好部分
不要忘记将安装的文件夹和 fs-bucket 主机的路径替换为目标文件夹路径(确保该文件夹不存在)和您的 fs-bucket 主机