laravel save pdf нет такого файла или каталога - PullRequest
0 голосов
/ 10 ноября 2018

Итак, я хочу сохранить файл pdf в каталог на моем локальном сервере, но он постоянно говорит, что этот каталог не существует.

Итак, прежде всего, где вы будете хранить файлы PDF, которые не доступны для внешних пользователей (то есть, не в общей папке).

Так что это мой код. Загрузка работает отлично.

public function generatePDF()
    {
        $this->mailorder = Session::get('order');
        $this->cart = Session::get('cart');
        $data = [
                    'id' => $this->mailorder->id,
                    'client' => $this->mailorder->Contact,
                    'country' => $this->mailorder->country,
                    'city' => $this->mailorder->city,
                    'street' => $this->mailorder->street,
                    'postal' => $this->mailorder->postal,
                    'phone' => $this->mailorder->phone,
                    'email' => $this->mailorder->email,
                    'dateIn' => $this->mailorder->dateIn,
                    'dateOut' => $this->mailorder->dateOut,
                    'subtotal' => $this->mailorder->subtotal,
                    'tax' => $this->mailorder->tax,
                    'total' => $this->mailorder->total,
                    'cart' => $this->mailorder->cart,
                    'delivery' => $this->mailorder->delivery,
                ];
        $path = "order_{$this->mailorder->id}_{$this->mailorder->Contact}";       
        $pdf = PDF::loadView('pdf.orderConfirmationPdf', $data)->save('storage/app/public/'.$path.'.pdf');
        ;

        return $pdf->download(''.$path.'.pdf');
    }

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Я понял, спасибо за ваш ответ.

Это мой код:

public function generatePDF()
    {
        $this->mailorder = Session::get('order');
        $this->cart = Session::get('cart');
        $data = [
                    'id' => $this->mailorder->id,
                    'client' => $this->mailorder->Contact,
                    'country' => $this->mailorder->country,
                    'city' => $this->mailorder->city,
                    'street' => $this->mailorder->street,
                    'postal' => $this->mailorder->postal,
                    'phone' => $this->mailorder->phone,
                    'email' => $this->mailorder->email,
                    'dateIn' => $this->mailorder->dateIn,
                    'dateOut' => $this->mailorder->dateOut,
                    'subtotal' => $this->mailorder->subtotal,
                    'tax' => $this->mailorder->tax,
                    'total' => $this->mailorder->total,
                    'cart' => $this->mailorder->cart,
                    'delivery' => $this->mailorder->delivery,
                ];
        $filename = "order_{$this->mailorder->id}_{$this->mailorder->Contact}";
        $path = storage_path('pdf/orders');

        if(!File::exists($path)) {
            File::makeDirectory($path, $mode = 0755, true, true);

        } 
        else {}

        $pdf = PDF::loadView('pdf.orderConfirmationPdf', $data)->save(''.$path.'/'.$filename.'.pdf');
        ;

        return $pdf->download(''.$filename.'.pdf');
    }
0 голосов
/ 10 ноября 2018

Прежде всего, вы должны проверить, существует ли каталог с File фасадом. Если он не существует, вы должны сделать каталог.

if(!File::exists($directory_path)) {
    File::makeDirectory($directory_path);
}

Если ошибка все еще возникает, вы должны заставить ее создать каталог:

if(!File::exists($directory_path)) {

   File::makeDirectory($directory_path, $mode = 0755, true, true);    
}

После этого вы можете сохранить файл в этом каталоге.

Во-вторых, если вы не хотите сохранять файл в публичном каталоге. Вы должны сохранить его в хранилище. Просто вызовите storage_path ($ file_path). Таким образом, Laravel сохраняет файл в директории storage / app / public.

после этого вы можете получить URL файла в соответствии с этим ответом .

...