使用 mpdf 库在 Google Cloud Storage 上上传 PDF 文件
Posted
技术标签:
【中文标题】使用 mpdf 库在 Google Cloud Storage 上上传 PDF 文件【英文标题】:Upload PDF file on Google Cloud Storage with mpdf library 【发布时间】:2018-08-09 11:22:39 【问题描述】:我正在使用 mpdf 库将 html 转换为 PDF,并成功地将我的 pdf 文件存储在本地和远程服务器上。但我不想将我的 pdf 文件存储在服务器上的代码仓库中,而是想利用谷歌云上可用的存储桶。
/*
*/
private function generatePDF($params, $quotationId)
$location = '/var/www/html/development/pdfs/';
$html = $this->load->view('quotation', $data, TRUE);
$filename = "quo_" .time() . ".pdf";
$mpdf = new \Mpdf\Mpdf(['mode' => 'en-IN', 'format' => 'A4']);
$mpdf->WriteHTML($html);
$mpdf->SetHTMLFooter('<p style="text-align: center; text-size: 12px;">This is computer generated quotation. It does not require signature.</p>');
$pdf = $mpdf->Output($location . $filename, 'F');
$this->UploadModel->upload($pdf, $filename);
public function upload($pdf, $pdfName)
$storage = new StorageClient();
$bucket = $storage->bucket("bucketname");
$object = $bucket->upload($pdf, ['name' => $pdfName]);
$object = $bucket->object($pdfName);
$object->update(['acl' => []], ['predefinedAcl' => 'PUBLICREAD']);
这里我使用了“F”类型,它将pdf文件保存在我托管在云服务器上的代码仓库中创建的pdfs文件夹中,但我想直接将它存储到谷歌云存储桶中。
我对谷歌云和 mpdf 库没有太多经验,因此寻求帮助和指导来实现这些功能。
请帮帮我。
【问题讨论】:
【参考方案1】:我看到你在 php 中使用 Cloud Storage Client Libraries。
首先,你需要将它安装到你的机器上:
composer require google/cloud-storage
然后你需要按照指南set up authentication。
一旦将这些设置为create a bucket 以存储 PDF。
然后将您的上传功能替换为documentation中的代码:
use Google\Cloud\Storage\StorageClient;
/**
* Upload a file.
*
* @param string $bucketName the name of your Google Cloud bucket.
* @param string $objectName the name of the object.
* @param string $source the path to the file to upload.
*
* @return Psr\Http\Message\StreamInterface
*/
function upload_object($bucketName, $objectName, $source)
$storage = new StorageClient();
$file = fopen($source, 'r');
$bucket = $storage->bucket($bucketName);
$object = $bucket->upload($file, [
'name' => $objectName
]);
printf('Uploaded %s to gs://%s/%s' . PHP_EOL, basename($source), $bucketName, $objectName);
【讨论】:
【参考方案2】:我也遇到了同样的问题并提出了this solution,希望对您有所帮助。 使用 'S' 而不是 'F' 参数,因此它将返回字符串数据并将此数据直接传递给上传方法。
【讨论】:
以上是关于使用 mpdf 库在 Google Cloud Storage 上上传 PDF 文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python,将 google.cloud.bigquery.job.query.QueryJob 输出保存到本地 JSON 文件
将 Nuxt JS s-s-r 应用程序部署到 Google Cloud App Engine 标准