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

2022-01-07 00:00:00 file-upload php yii2

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

Following Yii Framework 2.0 documentation http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html I tried to upload image. The image could be uploaded successfully, but after uploading the image, I tried to insert the model into the database with the following code.

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

 $model->save();

我收到以下错误:

 PHP Warning – yiiaseErrorException

 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 – yiihelpersBaseFileHelper::getMimeType()
  $mimeType = FileHelper::getMimeType($file->tempName, null, false);

 3.
 4.
 and so on ....

结果是图片已经上传但是模型没有插入到数据库中.有大佬知道怎么解决吗?

The result is that image has been uploaded but the model has not been inserted into the database. Does anyone know how to solve this?

推荐答案

我遇到了完全相同的问题,我通过调用

I was having the exact same problem, and I solved it by calling

$model->save();

之前

$model->file->saveAs()

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

I don't know how your model looks like, but if you are just saving the actual file on the server, and only the path to the image in the DB, it should work.

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

I think what happens is that when you call file->saveAs() before model->save, the model validation fails because 'file' no longer contains the uploaded data (it is already saved as...). Hope it makes sense.

相关文章