Laravel - загрузка файла не позволяет использовать файлы всех типов по какой-либо причине. - PullRequest
0 голосов
/ 22 января 2020

Мое приложение по какой-то причине запрещает доступ к загрузке файлов с определенными расширениями. Он выводит ошибку:

fopen(C:\wamp64\www\storage\app\public/wrdjxF3EMbtGCUyXjSEWH5zeAu822ACeKikLPaCT.): failed to open stream: Permission denied

Типы файлов, которые выдавали эту ошибку до сих пор: .msg и .txt . Я понятия не имею, что вызывает эту проблему, другие типы файлов, кажется, работают нормально.

Функция контроллера, которая обрабатывает загрузку файлов:

if($request->hasFile('document'))
{
    $files = $request->file('document');
    foreach($files as $file){
        if($file){
            $name = $file->getClientOriginalName();
            $size = $file->getClientSize();
            $size = number_format($size / 1048576,2);
            $path = $file->store('public');
            Document::create([
                'report_id' => $id,
                'report_type' => "App\VisitingReport",
                'file_path' => $path,
                'file_name' => $name,
                'file_size' => $size.' MB'
            ]);  
        }
    }
}

Любая помощь будет оценена, спасибо.

Я запускаю это на Windows компьютере с использованием WAMP.

Я убежден, что это как-то связано с разрешениями. Я уже на шаг вперед, файл загружается, но на этот раз без расширения.

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Я сталкивался с этой ошибкой, но не знаю, работает она у вас или нет. поместите это в ваш файл .env

FILESYSTEM_DRIVER = public

и свяжите папку publi c с папкой хранения с помощью этой команды:

php artisan storage:link

Надеюсь, это сработает.

0 голосов
/ 22 января 2020

Вы можете вставить здесь, какие разрешения вы видите для других типов файлов и .txt после загрузки. Запустите ls -la в том месте, где хранятся эти файлы, и разрешение должно быть слева. что-то вроде rwxr-wr-w. Вставьте сюда, чтобы хотя бы он мог дать подсказку, в чем может быть проблема.

В противном случае, после загрузки файла .txt вы можете запустить chmod 777 some.txt и посмотреть, по-прежнему ли вы получаете разрешение. Если вы не получаете разрешение проблемы больше, чем он каким-то образом создает файл .txt с другим разрешением. Но не стоит делать 777 для чего-либо: D. Но, по крайней мере, теперь вы знаете, в чем проблема.

Если проблема связана с разрешениями, то вот замечательный ответ на этот топи c

Как настроить разрешения для файлов для Laravel?

Удачи :) Я не эксперт, просто пытаюсь помочь

...