【问题标题】:I have a problem with image upload using Laravel我在使用 Laravel 上传图片时遇到问题
【发布时间】:2020-04-05 14:28:08
【问题描述】:

图片上传有问题。但是我已经使用了很多次相同的机制,但现在的问题。 任何人都可以帮我找出解决方案吗?

【问题讨论】:

  • 您需要在问题中包含所有错误和代码作为文本,而不是图像。

标签: laravel image upload


【解决方案1】:

如果文件大小大于 php.ini 的 upload_max_filesize,Laravel 的 Symphony 源返回文件大小为 0。

因此,请检查 php.ini 文件中的 upload_max_filesize。 upload_max_filesize 可能小于您尝试上传的文件。

【讨论】:

  • 没有这个没问题。我已经使用相同的机制从另一个控制器上传了许多图像。我也只是尝试上传一个 3kb 的文件。请检查来自 laravel git 存储库 github.com/laravel/framework/issues/30064 的打击链接
【解决方案2】:

该错误可能是由许多原因引起的,例如 php config 等。 我认为代码需要一点重构,尽量使用 Laravel 的File StorageMutators。也可以看看Dependency injections

如果您使用的是 Laravel 6 或 7 实现文件上传的一种方法是:

在你看来:

/* 
 * make sure that the form has the attribute:
 * enctype="multipart/form-data"
 * or else no file will be passed
 * */
<form action="action.php" enctype="multipart/form-data">....

在控制器的updateSetting 方法中:

public function updateSetting(Request $request, Setting $settings)
{
    // do your validations and others

    $settings->update($request->all());
    // else: $settings->create($request->all());

    // * you could use eloquent's updateOrCreate() method, look for it in the documentation        

    // your redirect code...
}

在您的设置模型中,添加一个修改器来处理管理员徽标的设置以及上传文件和删除旧文件。 (您也可以为上传逻辑创建一个助手)

public function setAdminLogoAttribute($value)
{
    // Add your delete old admin logo logic

    if (is_file($value)) {
        $fileName = time() . "_" . $value->getClientOriginalName();
        $path = $value->move(
            public_path('uploads'),
            $fileName
        ); // or create a handleImage() helper

        $this->attributes['admin_logo'] = $fileName;
    }
}

如果这不起作用,则可能是配置有问题,也可能不是,您可以尝试向我们提供有关错误发生的具体情况的更多信息

【讨论】:

  • 我已经解决了这个问题,只更改了文件名。
【解决方案3】:

我已经解决了这个问题,我只是更改了名称。

        $ext= $file->getClientOriginalExtension();
        $file_name = time()."." . $ext;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-08
    • 2017-08-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    • 2021-06-14
    • 2020-07-08
    相关资源
    最近更新 更多