【问题标题】:Laravel - File upload doesn't seem to allow all types of files for some reasonLaravel - 由于某种原因,文件上传似乎不允许所有类型的文件
【发布时间】:2020-05-08 16:53:08
【问题描述】:

由于某种原因,我的应用程序拒绝访问具有某些扩展名的文件。 它打印出错误:

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

任何帮助将不胜感激,谢谢。

我正在使用 WAMP 的 Windows 计算机上运行它。

我相信这确实与权限有关。我已经更进一步了,文件已上传,但这次没有扩展名。

【问题讨论】:

    标签: laravel file-upload controller


    【解决方案1】:

    您能否在此处粘贴您在上传后看到的其他文件类型和.txt 的权限。在存储这些文件的地方运行ls -la,权限应该在最左边。类似rwxr-wr-w。粘贴到这里,这样至少它可以提供可能是什么问题的线索。

    否则,一旦上传了.txt 文件,您可以运行chmod 777 some.txt 并查看您是否仍然遇到权限问题。如果您不再遇到权限问题,那么它会以某种方式创建具有不同权限的 .txt 文件。但是对任何事情都做777 不是一个好主意:D。但至少现在你知道问题出在哪里了。

    如果权限是问题,那么这里是关于这个主题的一个很好的答案

    How to set up file permissions for Laravel?

    祝你好运:) 我不是专家,只是想提供帮助

    【讨论】:

    • 我应该补充一点,我正在使用 Windows 和 WAMP :P。
    【解决方案2】:

    我遇到过这个错误,但我不知道它是否适合你。 把它放在你的 .env 文件中

    FILESYSTEM_DRIVER = public
    

    并使用以下命令将公用文件夹与存储文件夹链接:

    php artisan storage:link
    

    我希望它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多