Home > PHP Framework > ThinkPHP > body text

How to add layui to thinkphp5 to implement image upload function

WBOY
Release: 2023-05-28 11:13:06
forward
1348 people have browsed it

Many forms on the website will be used to upload pictures, logos, photos, and users will also upload pictures. At this time, the website needs a function to upload pictures, and after uploading, I hope to preview it to see if it is uploaded correctly.

thinkphp5 adds layui to implement the image upload function (with image preview), asynchronously transmit the image and preview it, return the asynchronously uploaded value to the hidden field of the form and then submit it.

1. Import the file

First of all, it is necessary to introduce the jQuery file

<link rel="stylesheet" type="text/css" href="__STATIC__/plugins/layui/css/layui.css" rel="external nofollow" >
<script type="text/javascript" src="__STATIC__/plugins/layui/layui.js"></script>
Copy after login

2. HTML part

<form class="layui-form">
<div class="layui-input-inline">
	<button class="layui-btn layui-btn-sm" onclick="return false;" id="upload_img"><i class="layui-icon">&#xe67c;</i>上传图片</button>
	<img id="pre_img" <?php if($data[&#39;item&#39;][&#39;img&#39;]){echo &#39;src="&#39;.$data[&#39;item&#39;][&#39;img&#39;].&#39;"&#39;;}?>  />
	<input type="hidden" name="img" value="{$data.item.img}">
</div>

	<div class="layui-form-item">
		<div class="layui-input-block">
			<button class="layui-btn" onclick="save()">保存</button>
		</div>
	</div>
</form>
Copy after login

3. Function implementation

<script type="text/javascript">
	layui.use([&#39;form&#39;,&#39;layer&#39;,&#39;upload&#39;],function(){
		$ = layui.jquery;
		var form = layui.form;
		layer = layui.layer;

		var upload = layui.upload;
   
		 //执行实例
		var uploadInst = upload.render({
			elem: &#39;#upload_img&#39; //绑定元素
			,url: &#39;/admins.php/admins/video/upload_img&#39; //上传接口
			,accept:&#39;images&#39;
			,done: function(res){
			  //上传完毕回调
			  $(&#39;#pre_img&#39;).attr(&#39;src&#39;,res.msg);
			  $(&#39;input[name="img"]&#39;).val(res.msg);
			}
			,error: function(){
			  //请求异常回调
			}
		});
	});

	// 保存
	function save(){
		var title = $.trim($(&#39;input[name="title"]&#39;).val());
		var url = $.trim($(&#39;input[name="url"]&#39;).val());
		if(title == &#39;&#39;){
			layer.msg(&#39;请输入影片名称&#39;,{&#39;icon&#39;:2,&#39;anim&#39;:6});
			return;
		}
		if(url == &#39;&#39;){
			layer.msg(&#39;请输入影片地址&#39;,{&#39;icon&#39;:2,&#39;anim&#39;:6});
			return;
		}
		$.post(&#39;/admins.php/admins/video/save&#39;,$(&#39;form&#39;).serialize(),function(res){
			if(res.code>0){
				layer.msg(res.msg,{&#39;icon&#39;:2,&#39;anim&#39;:2});
			}else{
				layer.msg(res.msg,{&#39;icon&#39;:1});
				setTimeout(function(){parent.window.location.reload();},1000);
			}
		},&#39;json&#39;);
	}
</script>
Copy after login

4. Background processing

Picture upload

public function upload_img(){
	$file = request()->file(&#39;file&#39;);
	if($file==null){
		exit(json_encode(array(&#39;code&#39;=>1,&#39;msg&#39;=>&#39;没有文件上传&#39;)));
	}
	$info = $file->move(ROOT_PATH.&#39;public&#39;.DS.&#39;uploads&#39;);
	$ext = ($info->getExtension());
	if(!in_array($ext,array(&#39;jpg&#39;,&#39;jpeg&#39;,&#39;gif&#39;,&#39;png&#39;))){
		exit(json_encode(array(&#39;code&#39;=>1,&#39;msg&#39;=>&#39;文件格式不支持&#39;)));
	}
	$img = &#39;/uploads/&#39;.$info->getSaveName();
	exit(json_encode(array(&#39;code&#39;=>0,&#39;msg&#39;=>$img)));
}
Copy after login

Save content

public function save(){
	$id = (int)input(&#39;post.id&#39;);
	$data[&#39;title&#39;] = trim(input(&#39;post.title&#39;));
	$data[&#39;channel_id&#39;] = (int)input(&#39;post.channel_id&#39;);
	$data[&#39;charge_id&#39;] = (int)input(&#39;post.charge_id&#39;);
	$data[&#39;area_id&#39;] = (int)input(&#39;post.area_id&#39;);
	$data[&#39;img&#39;] = trim(input(&#39;post.img&#39;));
	$data[&#39;url&#39;] = trim(input(&#39;post.url&#39;));
	$data[&#39;keywords&#39;] = trim(input(&#39;post.keywords&#39;));
	$data[&#39;desc&#39;] = trim(input(&#39;post.desc&#39;));
	$data[&#39;status&#39;] = (int)input(&#39;post.status&#39;);

	if($data[&#39;title&#39;] == &#39;&#39;){
		exit(json_encode(array(&#39;code&#39;=>1,&#39;msg&#39;=>&#39;影片名称不能为空&#39;)));
	}
	if($data[&#39;url&#39;] == &#39;&#39;){
		exit(json_encode(array(&#39;code&#39;=>1,&#39;msg&#39;=>&#39;影片地址不能为空&#39;)));
	}

	if($id){
		$this->db->table(&#39;video&#39;)->where(array(&#39;id&#39;=>$id))->update($data);
	}else{
		$data[&#39;add_time&#39;] = time();
		$this->db->table(&#39;video&#39;)->insert($data);
	}
	exit(json_encode(array(&#39;code&#39;=>0,&#39;msg&#39;=>&#39;保存成功&#39;)));
}
Copy after login

The above is the detailed content of How to add layui to thinkphp5 to implement image upload function. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:yisu.com
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template