Yii 框架 2.0 上传文件错误 finfo_file(): 无法打开流: 没有这样的文件或目录

2022-08-31 00:29:04

按照 Yii Framework 2.0 文档 http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html 我试图上传图片。图像可以成功上传,但在上传图像后,我尝试使用以下代码将模型插入到数据库中。

 $model->file->saveAs('uploads/' . $model->file->baseName . '.' . $model->file->extension);

 $model->save();

我得到以下错误:

 PHP Warning – yii\base\ErrorException

 finfo_file(/tmp/phpIGuwiT): failed to open stream: No such file or directory

 1. in /var/www/html/website/advanced/vendor/yiisoft/yii2/helpers/BaseFileHelper.php
 if ($info) {
        $result = finfo_file($info, $file);
        finfo_close($info);

        if ($result !== false) {
            return $result;
        }
    }

 2. in /var/www/html/my-project/advanced/vendor/yiisoft/yii2/validators/FileValidator.php – yii\helpers\BaseFileHelper::getMimeType()
  $mimeType = FileHelper::getMimeType($file->tempName, null, false);

 3.
 4.
 and so on ....

结果是图像已上载,但模型尚未插入到数据库中。有谁知道如何解决这个问题?


答案 1

我遇到了完全相同的问题,我通过致电解决了它

$model->save();

以前

$model->file->saveAs()

我不知道你的模型是什么样子的,但是如果你只是将实际文件保存在服务器上,并且只保存数据库中图像的路径,它应该可以工作。

我认为发生的事情是,当您在 model->save 之前调用 file->saveAs() 时,模型验证会失败,因为“file”不再包含上传的数据(它已经保存为...)。希望这是有道理的。


答案 2
 $model->file->saveAs();

 //try delete imageFile file variable before save model

 $model->imageFile = null;

 $model->save();

推荐