You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 6图片上传至文件夹及数据库报错:临时文件不存在或不可读

看起来你遇到的问题是图片能成功上传到指定文件夹,但数据库没写入数据,还出现了临时文件不可读的报错。我帮你分析下原因,然后给出具体的修复方案:

1. 修复临时文件不可读的报错

你的代码里第一个图片处理逻辑中,先获取了$file = $req->file('anhbia');,但后续却用$req->file('anhbia')->move(...)执行移动操作——这属于重复操作同一个文件实例,容易导致临时文件引用异常。更稳妥的方式是直接用已经赋值的$file变量调用move():

// 原代码
$req->file('anhbia')->move('sources/image', $name);

// 修改后
$file->move('sources/image', $name);

把所有图片处理块里的$req->file()->move()都替换成$file->move(),就能解决临时文件找不到的问题。

2. 解决数据库不写入的问题

数据库没写入主要有两个核心原因:

a. 模型未设置批量赋值白名单

检查你的chitiet模型,必须确保$fillable属性包含所有需要赋值的字段,否则Laravel的批量赋值保护会阻止字段写入数据库:

class chitiet extends Model
{
    protected $fillable = [
        'tengame', 'idnhaphathanh', 'idtheloai', 'idcauhinh', 
        'namphathanh', 'mota', 'nentang', 'link', 'link2', 
        'anhbia', 'anh1', 'anh2', 'anh3', 'video', 'luottai'
    ];
}

b. echo 'failese';破坏了响应流程

当某个图片未上传时,你用echo 'failese';直接输出内容,这会导致Laravel的HTTP响应提前发送,后续的$chitiet->save()代码根本不会执行。直接删掉所有echo 'failese';即可——如果图片是可选上传的,跳过赋值逻辑不影响后续保存操作。

3. 优化验证逻辑(可选但推荐)

你当前的validate方法是空的,建议添加文件验证规则,提前拦截不符合要求的文件,让代码更健壮:

$this->validate($req, [
    'tengame' => 'required|string',
    'namphathanh' => 'required|integer|between:2000,2019',
    'anhbia' => 'nullable|image|mimes:jpg',
    'anh1' => 'nullable|image|mimes:jpg',
    'anh2' => 'nullable|image|mimes:jpg',
    'anh3' => 'nullable|image|mimes:jpg',
], [
    'tengame.required' => 'Tên game không được để trống',
    'namphathanh.between' => 'Năm phát hành phải từ 2000 đến 2019',
    'anhbia.mimes' => 'Chỉ được thêm ảnh có đuôi jpg nhé',
    'anh1.mimes' => 'Chỉ được thêm ảnh có đuôi jpg nhé',
    'anh2.mimes' => 'Chỉ được thêm ảnh có đuôi jpg nhé',
    'anh3.mimes' => 'Chỉ được thêm ảnh có đuôi jpg nhé',
]);

这样就不用在每个文件处理块里手动判断扩展名了,代码更简洁易维护。

修复后的完整Controller代码

public function postThem(Request $req) { 
    $this->validate($req, [
        'tengame' => 'required|string',
        'namphathanh' => 'required|integer|between:2000,2019',
        'anhbia' => 'nullable|image|mimes:jpg',
        'anh1' => 'nullable|image|mimes:jpg',
        'anh2' => 'nullable|image|mimes:jpg',
        'anh3' => 'nullable|image|mimes:jpg',
    ], [
        'tengame.required' => 'Tên game không được để trống',
        'namphathanh.between' => 'Năm phát hành phải từ 2000 đến 2019',
        'anhbia.mimes' => 'Chỉ được thêm ảnh có đuôi jpg nhé',
        'anh1.mimes' => 'Chỉ được thêm ảnh có đuôi jpg nhé',
        'anh2.mimes' => 'Chỉ được thêm ảnh có đuôi jpg nhé',
        'anh3.mimes' => 'Chỉ được thêm ảnh có đuôi jpg nhé',
    ]); 

    $chitiet = new chitiet(); 
    $chitiet->tengame = $req->tengame; 
    $chitiet->idnhaphathanh = $req->idnhaphathanh; 
    $chitiet->idtheloai = $req->idtheloai; 
    $chitiet->idcauhinh = $req->idcauhinh; 
    $chitiet->namphathanh = $req->namphathanh; 
    $chitiet->mota = $req->mota; 
    $chitiet->nentang = $req->nentang; 
    $chitiet->link = $req->link; 
    $chitiet->link2 = $req->link2; 

    if($req->hasFile('anhbia')) { 
        $file = $req->file('anhbia'); 
        $name = $req->tengame . ".jpg"; 
        $file->move('sources/image', $name); 
        $chitiet->anhbia = $name; 
    } 

    if($req->hasFile('anh1')) { 
        $file = $req->file('anh1'); 
        $name = $req->tengame . "1.jpg"; 
        $file->move("sources/image", $name); 
        $chitiet->anh1 = $name; 
    } 

    if($req->hasFile('anh2')) { 
        $file = $req->file('anh2'); 
        $name = $req->tengame . "2.jpg"; 
        $file->move("sources/image", $name); 
        $chitiet->anh2 = $name; 
    } 

    if($req->hasFile('anh3')) { 
        $file = $req->file('anh3'); 
        $name = $req->tengame . "3.jpg"; 
        $file->move("sources/image", $name); 
        $chitiet->anh3 = $name; 
    } 

    $chitiet->video = $req->video; 
    $chitiet->luottai = "0"; 
    $chitiet->save(); 

    return redirect()->back()->with('ok','Thêm game thành công :v'); 
}

内容的提问来源于stack exchange,提问作者Modric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 09:08:00