我正尝试使用PHP将一些文件上传到Google云端存储。这似乎是部分工作,因为我看到的Web控制台中的文件,但我注意到,所有文件只有14个字节的大小,而原来更大。只有14个字节被上传到Google云端存储
这是我使用的代码:
/**
*
*/
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->getRealPath()
回报像/tmp/asdfasdfadf
和我验证过该文件存在,是一个合理的规模。 $newFilename
变量名是我希望它被存储为,这部分似乎工作,因为我在Web控制台中看到该文件名。
任何想法可能发生什么?
我真的不知道PHP,但有可能是你只上传文件路径作为一个字符串,而不是到实际的文件?如果您查看客户端库,他们似乎使用'fopen':https://googlecloudplatform.github.io/google-cloud-php/#/docs/google-cloud/v0.24.0/storage/bucket?method=上传 即'$ bucket-> upload(fopen($ originalFile-> getRealPath(),'r'),['name'=> $ newFilename]);' –
您可以在php中更改最大允许大小的上传。 ini.serch这个upload_max_filesize = 128M – lalithkumar
@RobertLacok好,我会检查出来并报告回来。 – Sandy