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

O C*_*nor 14 php file-upload yii2

遵循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();
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

 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 ....
Run Code Online (Sandbox Code Playgroud)

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

小智 12

我遇到了完全相同的问题,我通过电话解决了这个问题

$model->save();
Run Code Online (Sandbox Code Playgroud)

之前

$model->file->saveAs()
Run Code Online (Sandbox Code Playgroud)

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

我认为当模型 - > save之前调用file-> saveAs()时,模型验证失败,因为'file'不再包含上传的数据(它已经保存为......).希望它有意义.

  • 这不是我认为合适的解决方案,因为如果我们在文件上传时出错,那么(例如文件/目录读写权限)?保存在数据库中的记录不会包含任何相应的图像/文件 (2认同)

小智 9

 $model->file->saveAs();

 //try delete imageFile file variable before save model

 $model->imageFile = null;

 $model->save();
Run Code Online (Sandbox Code Playgroud)


小智 5

我有同样的问题,我解决了这个问题.

$model->file->saveAs($filepath , false)

然后

$model->save(false)

重要:在saveAs函数传递False参数中.