首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel:如何将pdf文件直接上传到Google Cloud Storage bucket,而无需先将其保存到本地

Laravel:如何将pdf文件直接上传到Google Cloud Storage bucket,而无需先将其保存到本地
EN

Stack Overflow用户
提问于 2021-04-22 06:55:59
回答 1查看 343关注 0票数 1

我在一个应用程序接口中使用了google/cloud-storage包,并成功地将pdf文件上传到Google Cloud Storage存储桶中。但是,pdf文件在上传到Google Cloud Storage存储桶之前会先保存在本地。

如何跳过本地保存,直接上传到Google Cloud Storage存储桶?我计划在Google App Engine上托管API。这是它的post

这就是我目前正在做的事情:

代码语言:javascript
复制
$filename = $request['firstname'] . '.pdf';
$fileStoragePath = '/storage/pdf/' . $filename;
$publicPath = public_path($fileStoragePath);

$pdf = App::make('dompdf.wrapper');
$pdf->loadView('pdfdocument', $validatedData)
$pdf->save($publicPath); 

$googleConfigFile = file_get_contents(config_path('googlecloud.json'));
$storage = new StorageClient([
    'keyFile' => json_decode($googleConfigFile, true)
]);
$storageBucketName = config('googlecloud.storage_bucket');
$bucket = $storage->bucket($storageBucketName);
$fileSource = fopen($publicPath, 'r');
$newFolderName = $request['firstname'].'_'.date("Y-m-d").'_'.date("H:i:s");
$googleCloudStoragePath = $newFolderName.'/'.$filename;

/*
*  Upload a file to the bucket.
*  Using Predefined ACLs to manage object permissions, you may
*  upload a file and give read access to anyone with the URL.
*/
$bucket->upload($fileSource, [
    'predefinedAcl' => 'publicRead',
    'name' => $googleCloudStoragePath
]);

是否可以在不先将文件保存到本地的情况下将文件上传到Google Cloud Storage存储桶?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-22 11:14:55

我还没有验证过这段代码,但是类PDF成员output()返回了一个字符串。

代码语言:javascript
复制
$pdf = App::make('dompdf.wrapper');
$pdf->loadView('pdfdocument', $validatedData)

...

$bucket->upload($pdf->output(), [
    'predefinedAcl' => 'publicRead',
    'name' => $googleCloudStoragePath
]);

您可以简单地编写客户端代码。替换:

代码语言:javascript
复制
$googleConfigFile = file_get_contents(config_path('googlecloud.json'));
$storage = new StorageClient([
    'keyFile' => json_decode($googleConfigFile, true)
]);

使用

代码语言:javascript
复制
$storage = new StorageClient([
    'keyFilePath' => config_path('googlecloud.json')
]);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67204491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档