Laravel 5.7 Невозможно записать данные изображения в путь. - PullRequest
0 голосов
/ 20 февраля 2019

Я хочу сохранить все свои загруженные файлы в общедоступных.

Каждый раз, когда суперадмин создает новую компанию, он создает папку, которую можно найти в общедоступных

$path = public_path().'/attachments/'.$company_id;
if (!File::exists($path)) {
                File::makeDirectory($path, 777, true, true);
}

Когда япопытался загрузить логотип компании, он выдает ошибку "Can't write image data to path (C:\wamp64\www\accubooksv2\public/attachments/10/C-CP//1550648014.jpg)"

Контроллер

$data['company_id'] = Auth::user()->company_id;
        $image = $request->file('image');
        $data['imagename'] = time().'.'.$image->getClientOriginalExtension();
        $destinationPath = public_path().'/attachments/'.$data['company_id'].'/C-CP/';
        // $path = public_path().'/attachments/'.$data['company_id'].'/C-CP/';
        // File::makeDirectory(public_path()."uploads/properties");
        // File::makeDirectory($path,0777,true);
        $img = Image::make($image);
         $img->resize(100, 100, function ($constraint) {
            $constraint->aspectRatio();
        })->save($destinationPath.'/'.$data['imagename']);

Вот пример создания новой папки после того, как я создал новую компанию.enter image description here

Вопрос: В чем причина этой ошибки и как ее исправить?

1 Ответ

0 голосов
/ 20 февраля 2019

Ключ к ошибке может быть в пути к файлу:

C:\wamp64\www\accubooksv2\public/attachments/10/C-CP//1550648014.jpg)

Смешанный разделитель каталогов может вызывать ошибку.Что произойдет, если вы измените разделитель каталогов с / на \.

Если вы хотите сделать свой код кроссплатформенным, используйте DIRECTORY_SEPARATOR вместо \ или /.Например:

$path = public_path() . DIRECTORY_SEPARATOR . 'attachments'. DIRECTORY_SEPARATOR . $company_id;

Или

$path = join(DIRECTORY_SEPARATOR, array('attachments', $company_id);
$path = public_path($path);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...