如何使用Laravel将PDF文件上传至数据库?解决BLOB显示异常
解决PDF文件存入数据库的问题
你的问题出在直接将$request->file存入数据库——这只是获取了文件对象,并没有读取文件的实际内容,所以数据库里只存储了对象的引用而非文件数据,导致显示[BLOB -24]。按以下步骤修改即可:
1. 确认数据库字段类型
确保pegawai表的file字段类型为LONGBLOB(BLOB容量有限,无法存储较大的PDF文件)。如果用Laravel迁移创建字段,代码如下:
$table->longBlob('file');
2. 修改控制器代码
首先添加文件验证(确保上传的是PDF),然后读取文件的二进制内容再存入数据库:
// 先验证请求参数 $request->validate([ 'nama' => 'required', 'jabatan' => 'required', 'umur' => 'required|integer', 'alamat' => 'required', 'file' => 'required|file|mimes:pdf' // 验证上传文件为PDF格式 ]); // 读取PDF文件的二进制内容 $pdfContent = $request->file('file')->get(); // 插入数据到数据库 DB::table('pegawai')->insert([ 'nama' => $request->nama, 'jabatan' => $request->jabatan, 'umur' => $request->umur, 'alamat' => $request->alamat, 'file' => $pdfContent // 存入文件的二进制内容 ]);
3. 额外注意事项
- 如果需要上传大体积PDF,需修改
php.ini中的配置:upload_max_filesize:设置为足够大的值(例如20M)post_max_size:值需大于upload_max_filesize(例如25M)
- 虽然可以将PDF存入数据库,但生产环境更推荐将文件存储到本地文件系统或云存储服务,数据库仅保存文件路径,这样性能更优且更易维护。
内容的提问来源于stack exchange,提问作者choco mufflin
相关产品推荐
相关产品推荐

