使用LayUI中Upload模块上传图片示例(包含前后端代码)

lauyi 文件上传的详细用法:layui.upload

一。前台代码块:

<!--
图片上传控件
 -->
<div class="layui-upload">
	<button type="button" class="layui-btn" name="payment_url" id="alipay_btn">上传截图</button>
	<div class="layui-upload-list layui-upload-list-plus" id="alipay_photo">
		 <ul class="multifyBox">
																    	
		</ul>
		 <!--<p id="uploadText_zs"></p>-->
	</div>
</div> 																					
<!--
end图片上传
 -->

//js控制控件上传
<script type="text/javascript">
           /*
			  lauyi 文件上传的详细用法:https://www.layui.com/doc/modules/upload.html
			*/
			layui.use('upload', function(){
			  var $ = layui.jquery
			  ,upload = layui.upload;			  
			  
			  /*
			   * 支付宝-转账截图/记录,可上传多张
			   * */		 
			 var aliPay=upload.render({
			    elem: '#alipay_btn'
			    ,url: '/order/imageUpload' //改成您自己的上传接口
			    ,multiple: true
			    ,choose: function(obj){
			    	var files = obj.pushFile();
			      //预读本地文件示例,不支持ie8
			    obj.preview(function(index, file, result){
			      	console.log(index); //得到文件索引
                    console.log(file);
			        $('#alipay_photo').show().find('.multifyBox').append(
			        	'<li class="mlist'+index+'">'
					    +	'<i id="removePimg'+index+'" class="removePimg"></i>'
					    +	'<img id="layui-uploadimg'+index+'" src="'+ result +'" alt="'+ file.name +'" class="layui-upload-img">'
					    +'</li>'									        	
			        )
			        
			        // 删除图片
			        $("#removePimg"+index).on("click", function(event){
			        	var _that=$(this);
			        	//_that.next('.layui-upload-img').attr('src','')
			           // _that.parent().remove(); 
			            
			            delete files[index];	
			            $(".mlist"+index).remove();
			        });
			        
			        //某图片放大预览
			        $("#layui-uploadimg"+index).on('click',function () {
			            var width = $("#layui-uploadimg"+index).width();
			            var height = $("#layui-uploadimg"+index).height();
			            var scaleWH = width/height;
			            var bigH = 600;
			            var bigW = scaleWH*bigH;
			            if(bigW>900){
			                bigW = 900;
			                bigH = bigW/scaleWH;
			            }
			 
			            // 放大预览图片
			            layer.open({
			                type: 1,
			                title: false,
			                closeBtn: 1,
			                shadeClose: true,
			                area: [bigW + 'px', bigH + 'px'], //宽高
			                content: "<img class='ngsPic' width='"+bigW+"' height='"+bigH+"' src=" + result + " />"
			            });
			        });			        
			      });
			    }
			    ,done: function(res){
			    	//如果上传失败
			      if(res.code > 0){
			        return layer.msg('上传失败');
			      }
			      //得到上传后的url
					 imageUrl=res.data.url;
					 //console.log(res.data);
				    //上传完毕
				    console.log('上传完毕')
			    }			   
			  });
	       })
	       </script>

二。后台接口代码:

 /**
     * 上传图片
     * @param file
     * @param request
     * @return
     * @throws IOException
     */
    @RequestMapping("/imageUpload")
    @ResponseBody
    public Object fileUpload(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws IOException {

        JSONObject jsonObject=new JSONObject();
        // 1.上传路径
        String path=System.getProperty("user.dir")+"\\src\\main\\resources\\static\\image";

        //得到上传图片的文件名
        String fileName = file.getOriginalFilename();
        String[] s =fileName.split("/");
        //得到该图片的名称
        String imageName=s[0];
        Date date = new Date();
        //格式日期转换
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        //得到session中对象
        MemberVO memberVO= (MemberVO) request.getSession().getAttribute("member");
        //根据用户id、时间戳以及上传图片名称生成图片名称生成新的图片名称
        String newImageName=(memberVO.getId()).toString()+sdf.format(date)+fileName;
        //生成图片文件
        File targetFile = new File(path, newImageName);
        if (!targetFile.getParentFile().exists()) {
            targetFile.getParentFile().mkdirs();//创建父级文件路径
            targetFile.createNewFile();//创建文件
        }

        //写入磁盘
        try {
            file.transferTo(targetFile);
        } catch (Exception e) {
            e.printStackTrace();
        }

        //返回访问url
        String url="http://localhost:8080/static/image/"+newImageName;
        jsonObject.put("url",url);

        return Result.ok(jsonObject);
    }

三。注意点:

1.有关于前台js中,我们只需要修改自己所需要调用的接口,该upload上传控件会把上传的file自动封装成参数传入后台调用接口:

2.后台接口如果需要返回值的话,可以存入JSONObject对象中,再用返回一个Result.ok()状态码,查看该源代码可知,若返回状态码为0表示该接口被被调用其执行成功:
在这里插入图片描述
3.前台需要接受值后台传输的值:
在这里插入图片描述

四。完成效果

在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 答:``` <!DOCTYPE html> <html> <head> <title>Layui上传图片到七牛云</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.css"> </head> <body> <div class="layui-upload"> <button type="button" class="layui-btn" id="upload">上传图片</button> <div class="layui-upload-list"> <img class="layui-upload-img" id="demo1"> <p id="demoText"></p> </div> </div> <script src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.js"></script> <script src="https://cdn.staticfile.org/qiniu-js/1.0.15/qiniu.min.js"></script> <script> //获取七牛上传凭证 $.get("你的获取七牛上传凭证接口", function (data) { var token = data.token; var config = { useCdnDomain: true, region: qiniu.region.z2 }; var putExtra = { fname: "", params: {}, mimeType: ["image/png", "image/jpeg", "image/gif"] }; var observer = { next(res){ console.log(res) }, error(err){ console.log(err) }, complete(res){ console.log(res); } } var observable = qiniu.upload(file, key, token, putExtra, config); var subscription = observable.subscribe(observer); // 上传开始 //取消上传 //subscription.unsubscribe(); }); </script> </body> </html> ``` ### 回答2: 使用Layui和七牛云上传图片代码如下: 首先,确保在页面引入Layui和七牛云SDK的相关文件: ```html <link rel="stylesheet" href="https://cdn.staticfile.org/layui/2.5.6/css/layui.css"> <script src="https://cdn.staticfile.org/layui/2.5.6/layui.js"></script> <script src="https://cdn.staticfile.org/qiniu-js/1.0.23/qiniu.min.js"></script> ``` 然后,在HTML创建一个用于上传图片的按钮和一个用于显示片预览的区域: ```html <input type="file" name="image" id="upload"> <div id="preview"></div> <button class="layui-btn" lay-submit lay-filter="upload">上传图片</button> ``` 接下来,在JavaScript编写Layui代码,包括上传图片和显示预览片的逻辑: ```javascript layui.use(['form'], function(){ var form = layui.form; // 初始化七牛云的参数 var uploader = Qiniu.uploader({ runtimes: 'html5', browse_button: 'upload', uptoken_url: '/your/uptoken/url', // 请求服务器获取上传凭证的URL domain: 'http://your-qiniu-domain.com', // 七牛云的空间域名 get_new_uptoken: false, auto_start: false, unique_names: true, filters: { mime_types: [ {title: "Image files", extensions: "jpg,jpeg,png"} ] }, init: { FileUploaded: function(up, file, info) { // 上传完成后,将片的URL添加到预览区域 var imageUrl = up.getOption('domain') + '/' + file.name; $('#preview').append('<img src="' + imageUrl + '">'); } } }); // 监听上传按钮的点击事件 form.on('submit(upload)', function(){ // 清空预览区域的内容 $('#preview').empty(); // 开始上传图片 uploader.start(); // 阻止表单的默认提交行为 return false; }); }); ``` 其,`uptoken_url`是服务器端用于获取上传凭证的接口URL,需要根据实际情况进行配置。 通过以上代码,当用户选择片文件并点击上传按钮时,会将上传到七牛云,并将上传完成后的片在预览区域进行显示。 ### 回答3: 使用 layui 上传图片到七牛云的代码如下: HTML部分: ```html <div class="layui-upload"> <button type="button" class="layui-btn" id="upload">上传图片</button> <input type="hidden" id="qiniuToken" value="" /> <input type="hidden" id="qiniuDomain" value="" /> <div class="layui-upload-list"> <img class="layui-upload-img" id="uploadImage"> <p id="uploadText"></p> </div> </div> ``` JavaScript部分: ```javascript layui.use('upload', function(){ var upload = layui.upload; // 初始化七牛云参数 var qiniuToken = ''; // 七牛云上传凭证 var qiniuDomain = ''; // 七牛云上传域名 // 获取七牛云上传凭证和域名 // 这一部分需要在后端获取,并且将值填入上面的两个变量 // 创建上传实例 var uploadInst = upload.render({ elem: '#upload', // 上传按钮的id url: qiniuDomain, // 七牛云上传域名 headers: { 'Authorization': 'UpToken ' + qiniuToken // 添加七牛云上传凭证 }, done: function(res){ // 上传完毕回调 console.log(res); if(res.code === 0){ $('#uploadImage').attr('src', res.data.src); // 将上传成功的片显示在页面上 $('#uploadText').text('上传成功'); } else { $('#uploadText').text('上传失败'); } }, error: function(){ // 请求异常回调 $('#uploadText').text('上传失败'); } }); }); ``` 这是一个使用 layui 框架的上传功能,使用layuiupload 模块来实现上传功能。首先需要在 HTML 设置上传按钮的id,然后引入 layuiupload 模块并初始化实例。在 JavaScript 部分,我们通过获取七牛云的上传凭证和域名,将其填入相应的变量。然后在创建上传实例时,设置上传按钮的id、七牛云上传域名和上传凭证等参数,以及上传成功和失败的回调函数用于处理上传结果。上传按钮被点击后,会触发上传操作,上传成功后通过回调函数将上传成功的片显示在页面上。 以上代码仅为示例,需要根据具体的七牛云配置进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Keson Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值