【发布时间】:2020-04-05 14:28:08
【问题描述】:
【问题讨论】:
-
您需要在问题中包含所有错误和代码作为文本,而不是图像。
【问题讨论】:
如果文件大小大于 php.ini 的 upload_max_filesize,Laravel 的 Symphony 源返回文件大小为 0。
因此,请检查 php.ini 文件中的 upload_max_filesize。 upload_max_filesize 可能小于您尝试上传的文件。
【讨论】:
该错误可能是由许多原因引起的,例如 php config 等。 我认为代码需要一点重构,尽量使用 Laravel 的File Storage 和Mutators。也可以看看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;
}
}
如果这不起作用,则可能是配置有问题,也可能不是,您可以尝试向我们提供有关错误发生的具体情况的更多信息
【讨论】:
我已经解决了这个问题,我只是更改了名称。
$ext= $file->getClientOriginalExtension();
$file_name = time()."." . $ext;
【讨论】: