对laravel-admin的图片上传机制有深深的疑惑,在用户信息页面上删除头像图片就会报错,当时用的是1.4的,后来更新1.5 发现删除按钮直接消失了,在使用过程中,要是在form中正常使用image就好用,稍微写的复杂一点(比如我把$form->image写在tab里的时候)就不好用了。
针对这个问题写了一个方法,(也不知道适不适用哈)
?
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
<?php
namespace App\\Admin\\Controllers;
use App\\Http\\Controllers\\Controller;
use Carbon\\Carbon;
use Encore\\Admin\\Controllers\\ModelForm;
use Encore\\Admin\\Form\\Field\\File;
use Illuminate\\Http\\UploadedFile;
class FileController extends Controller
{
use ModelForm;
public function index($type,$file=null,$ajax=true,$file_name="")
{
$file = $file ? $file : $_FILES['img'];
if($file['error']!=0){
$data = array('status'=>false,'msg'=>trans('admin::lang.Upload_error'));
return $ajax ? json_encode($data) : $data;
}
//得到文件名称
$name = $file['name'];
$img_type = strtolower(substr($name,strrpos($name,'.')+1)); //得到文件类型,并且都转化成小写
$allow_type = array('jpg','jpeg','gif','png'); //定义允许上传的类型
//判断文件类型是否被允许上传
if(!in_array($img_type, $allow_type)){
$data = array('status'=>false,'msg'=>trans('admin::lang.imgtype_error').$img_type);
return $ajax ? json_encode($data) : $data;
}
//判断是否是通过HTTP POST上传的
if(!is_uploaded_file($file['tmp_name'])){
$data = array('status'=>false,'msg'=>trans('admin::lang.post_img'));
return $ajax ? json_encode($data) : $data;
}
$file_name = $file_name ? $file_name.'.'.$img_type : md5(uniqid()).Carbon::now()->timestamp.'.'.$img_type;
if($type=='attr_img'){
$upload_path = public_path().'/upload/goods/attr_img/'; //上传文件的存放路径
$path = "goods/attr_img/";
}elseif($type=='goods'){
$upload_path = public_path().'/upload/goods/'; //上传文件的存放路径
$path = "goods/";
}else{
$upload_path = public_path().'/upload/'.$type.'/'; //上传文件的存放路径
$path = $type."/";
}
if(!is_dir($upload_path)){
@mkdir($upload_path);
}
//开始移动文件到相应的文件夹
if(move_uploaded_file($file['tmp_name'],$upload_path.$file_name)){
$data['status'] = true;
$data['path'] = $path.$file_name;
$data['view_path'] = config('admin.upload.host').$path.$file_name;
}else{
$data = array('status'=>false,'msg'=>trans('admin::lang.moveimg_error'));
return $ajax ? json_encode($data) : $data;
}
if($ajax){
return json_encode($data);
}else{
return $data;
}
}
public function multipleImg($type,$files,$ajax=true){
$imgs = array('status'=>true);
for($i=0;$i<count($files['name']);$i++){
$file['name'] = $files['name'][$i];
$file['type'] = $files['type'][$i];
$file['tmp_name'] = $files['tmp_name'][$i];
$file['error'] = $files['error'][$i];
$file['size'] = $files['size'][$i];
$data = $this->index($type,$file,false);
if($data['status']){
$imgs['path'][$i] = $data['path'];
$imgs['view_path'][$i] = $data['view_path'];
}else{
return $ajax ? json_encode(array('status'=>false,'msg'=>$data['msg'])) : array('status'=>false,'msg'=>$data['msg']);
}
}
return $ajax ? json_encode($imgs) : $imgs;
}
}
|
然后在form中这么写:
?
|
1
2
|
$form->image('img','图片')->deleteUrl(admin_url('mconfig/deleteUrl/' . img))->uniqueName()->value('1.jpg');
//其中value是默认显示的图片,uniquename是使用随机生成的文件名,deleteUrl是删除图片的路径
|
再在form方法后新建方法,删除数据库里的数据
?
|
1
2
3
4
5
6
7
8
9
10
|
public function deleteUrl($img){
$mconfig = MConfigModel::where('img',$img)->first();
$path = config('admin.upload.host').$mconfig->val;
if(file_exists($path)){
@unlink ($path);
}
$mconfig->val = "";
$mconfig->save();
return array('status'=>true);
}
|
最后别忘记添加相应的路由:
?
|
1
|
$router->put('/mconfig/deleteUrl/{img}','MConfigController@deleteUrl');
|
以上这篇laravel-admin的图片删除实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持快网idc。
原文链接:https://blog.csdn.net/qq_33541033/article/details/78709576
相关文章
猜你喜欢
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-27 39
-
2025-05-25 78
-
Dotnet Core 技术之Dotnet 6.0 深度探索
2025-05-29 79 -
2025-05-25 86
-
2025-05-27 74
热门评论

