Laravel-admin 集成 simditor 之后把上传图片的 base64 格式改成路径的问题
官方文档基本是蜻蜓点水了,没有说清楚。我利用官方的方法来安装了simditor这个插件,然后配置了下:
'simditor' => [
// Set to false if you want to disable this extension
'enable' => true,
// Editor configuration
'config' => [
'upload' => [
'url' => 'admin/api/upload', # example api route: admin/api/upload
'fileKey' => 'upload_file',
'connectionCount' => 3,
'leaveConfirm' => 'Uploading is in progress, are you sure to leave this page?'
],
'pasteImage' => true,
]
]
这里的url是不是admin开头的呢,然后路由写在了app/admin/routes.php里面:
$router->post('api/upload', 'HomeController@editor_upload')->name('admin.upload');
然后写了一个editor_upload的方法:
public function editor_upload()
{
$uploader = new ImageUploadHandler();
// 初始化返回数据,默认是失败的
$data = [
'success' => false,
'msg' => '上传失败!',
'file_path' => ''
];
if ($file = request()->upload_file) {
// 保存图片到本地
$result = $uploader->save($file, 'topics', "admin_", 1024);
// 图片保存成功的话
if ($result) {
$data['file_path'] = $result['path'];
$data['msg'] = "上传成功!";
$data['success'] = true;
}
}
return $data;
}
上面导入了教程里面的ImageUploadHandler对象。
然而没什么卵用,不知道哪里除了错误。
还有一个问题是,这里面没有csrf_token这个参数,需要写吗?
有截图吗,我的是正常的
@sachu 我是这样写的,你图片上传到本地还是oss??? public function uploadImage(Request $request, ImageUploadHandler $uploader) { // 初始化返回数据,默认是失败的 $data = [ 'success' => false, 'msg' => '上传失败!', 'file_path' => '' ]; // 判断是否有上传文件,并赋值给 $file if ($file = $request->upload_file) { // 保存图片到本地 $result = $uploader->save($file, 'topics', Auth::id(), 1024); // 图片保存成功的话 if ($result) { $data['file_path'] = $result['path']; $data['msg'] = "上传成功!"; $data['success'] = true; } } return $data; }
上传的时候会发一个请求到服务器, 你看一下那个请求返回的是什么东西 大致就能确定问题了