Загрузите файл PDF в Google Cloud Storage с библиотекой mpdf

Я использую библиотеку mpdf для преобразования HTML в PDF и успешно сохранил свой файл pdf как на локальном, так и на удаленном сервере. Но я не хочу хранить свои файлы pdf в репозиториях кода на сервере и предпочитаю использовать ведро хранилища, доступное в облаке Google.

/*
    */
    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, созданной в моем репозитории кода, размещенном на облачном сервере, но я хотел бы напрямую сохранить его в ведре облачного хранилища Google.

У меня нет большого опыта работы с облаком Google и библиотекой mpdf, поэтому мне нужна помощь и руководство для достижения этой функциональности.

Пожалуйста, помогите мне.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
307
2

Ответы 2

Я вижу, вы используете Клиентские библиотеки облачного хранилища для PHP.

Во-первых, вам нужно установить его на свой компьютер:

composer require google/cloud-storage

И затем вам нужно настроить аутентификацию, следуя руководству.

Как только они будут установлены, создать ведро для хранения PDF-файлов.

Затем замените свою функцию загрузки кодом из документация:

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);
}

Я также столкнулся с той же проблемой и вышел с это решение, надеюсь, это поможет вам. используйте 'S' вместо параметра 'F', чтобы он возвращал строковые данные и передавал эти данные непосредственно в метод загрузки.

Другие вопросы по теме