我试图使用PHP将一些文件上传到谷歌云存储。它似乎部分工作,因为我看到了网络控制台中的文件,但是我注意到所有文件的大小只有14个字节,而原始文件要大得多。
这是我正在使用的代码:
/**
*
*/
public static function saveFile($originalFile, $newFilename) {
$bucket = MyStorage::getBucket();
if ($bucket == null) {
// Save locally
Storage::disk('local')->put(FileController::$FILE_DIR . $newFilename, file_get_contents($originalFile));
} else {
// Save to Google Cloud Platform
$bucket->upload($originalFile->getRealPath(), ['name' => $newFilename]);
}
}
/**
*
*/
private static function getBucket() {
$appEnv = getenv('APP_ENV');
if ($appEnv == "production" || $appEnv == "test") {
$GOOGLE_CLOUD_PROJECT_ID = getenv('GOOGLE_PROJECT_ID');
$GOOGLE_CLOUD_BUCKET_NAME = getenv('GOOGLE_BUCKET_NAME');
$storage = new StorageClient(['projectId' => $GOOGLE_CLOUD_PROJECT_ID]);
$bucket = $storage->bucket($GOOGLE_CLOUD_BUCKET_NAME);
return $bucket;
} else {
return null;
}
}
$originalFile-
知道会发生什么吗?
else {
// Save to Google Cloud Platform
$bucket->upload($originalFile->getRealPath(), ['name' => $newFilename]);
}
应该是:
else {
// Save to Google Cloud Platform
$bucket->upload(fopen($originalFile->getRealPath(), 'rb'), ['name' => $newFilename]);
if( fclose($originalFile->getRealPath()) === false){
// Success
} else{
// Failure
}
}
你的代码不起作用的原因是你只上传了文件名到谷歌云。“/tmp/asdfasd”是14个字符。
下面是一个关于为什么“b”对fopen命令很重要的答案。
fclo关闭资源,防止数据泄漏。另外,检查fclo()的返回值,因为有些操作系统只刷新文件输出。检查返回值可以避免严重的数据泄漏。
是的,对于使用文件上传,您需要读取字节流才能将其发送到远程云。fopen将为您完成这项工作,以创建字节流。
我应该做什么才能成功上传图片?任何帮助都将不胜感激。 非常感谢。
追踪下面。 相关的Python片段: 最终触发(从ssl库): 溢出错误:字符串长度超过2147483647字节 我想我缺少一些特殊的配置选项? 这可能与这名1.5岁的年轻人有关,显然他还没有解决问题:https://github.com/googledatalab/datalab/issues/784. 谢谢你的帮助! 完整跟踪: [File”/usr/src/app/gcloud/downlo
我想按照官方文档中提供的示例将一个文件上传到Google云存储 然而,我得到了一个错误: 线程“main”com.google.cloud.storage.StorageException中的异常:获取服务帐户的访问令牌时出错:400个错误请求{“错误”:“无效的授予”、“错误描述”:“无效的JWT:令牌必须是短期令牌(60分钟)并且在合理的时间范围内。请检查JWT声明中的iat和exp值。”位于
我们一直在使用服务,在(AWS)中,我们意外删除了一个目录,因此我们认为它应该在中,但是经过查看,尽管处于打开状态,但它并不存在。
我正在尝试使用谷歌云存储JSON API将图像上传到谷歌云存储桶中。文件正在上载,但没有显示任何内容。 我正在通过以下方式上载图像:- 图像1 看图片1,文件上传成功。但当我点击它查看它时,它显示如图2所示。 图像2
在谷歌云存储中,我在名为图像的根桶中有一个名为猫的桶。我正在使用google-api-ruby-Client gem上传文件。我可以将文件上传到根桶“图像”,但上传到“图像/猫”不起作用。我知道谷歌云存储中的存储桶没有斜杠的概念,所以我无法弄清楚如何指定嵌套存储桶的名称。 这给出了nil:NilClass的错误