SpringBoot:layui表单文件上传


layui+springboot使用FormData文件上传

HTML代码:
<form class="layui-form layui-form-pane" id="fm" action="" enctype="multipart/form-data">
	  <div class="layui-form-item">
	    <label class="layui-form-label">图片名称</label>
	    <div class="layui-input-inline" style="width:300px;">
	      <input type="text" name="pName" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input">
	    </div>
	  </div>
	  
	   <div class="layui-form-item">
		    <label class="layui-form-label">系列</label>
		    <div class="layui-input-block" style="width:300px;">
		      <select name="series.id" lay-filter="series">
		        <option value=""></option>
		        <option value="0">第一系列</option>
		        <option value="1" selected="">第二系列</option>
		        <option value="2">第三系列</option>
		      </select>
		    </div>
		</div>
		<div class="layui-form-item">
		    <label class="layui-form-label">类别</label>
		    <div class="layui-input-block" style="width:300px;">
		      <select name="type.id" lay-filter="type">
		        <option value=""></option>
		        <option value="0">类别1</option>
		        <option value="1" selected="">金馆长</option>
		        <option value="2">张学友</option>
		      </select>
		    </div>
		</div>
	  <div class="layui-form-item">
	   <label class="layui-form-label">图片上传</label>
		    <div class="layui-input-block" style="width:300px;">
		    	<input type="file" id="imageFile" name="imageFile" />
		    </div>
		 <!--
	  	 <div class="layui-upload">
			  <button type="button" class="layui-btn layui-btn-normal" id="choosePhoto">选择图片</button>
			  
			 <img class="layui-upload-img" id="photoPre" style="width:200px;height:200px;">
			    <p id="demoText"></p> -->
			  
	 </div>  
	  
	  <div class="layui-form-item">
		    <div class="layui-input-block" style="width:300px;">
		      <button class="layui-btn" lay-submit="" lay-filter="photoSave">立即提交</button>
		      <button type="reset" class="layui-btn layui-btn-primary">重置</button>
		    </div>
	  </div>
	</form>	
一定要注意enctype="multipart/form-data"声明,这里没有使用到layui中的文件上传,因为这里涉及到其他表单字段,用layui模块不是很方便。
表单提交代码:
form.on('submit(photoSave)', function(data){
		 // console.log(data.field) 
		 //parent.layer.msg("2");
		 var formData = new FormData($( "#fm" )[0]);  
		 console.info(formData);
		 var saveLoading = parent.layer.msg('数据提交中,请稍候',{icon: 16,time:false,shade:0.8});
		 $.ajax({
                url : '/admin/photo/save',
                type : 'post',
                async: false,
                data : formData,
                cache:false,
                contentType: false,  
                processData: false, 
                success : function(data) {
                	parent.layer.close(saveLoading);
                	if(data.code==1){
                		parent.layer.msg("保存成功");
                	}
                }
	  		});
	});
这里使用的是FormData提交表单,表单中有文件上传的时候不能使用普通的ajax上传,这里的带参不能是data.field或者是$( '#表单id').serialize()也不行。
否则会报当前表单没有文件上传错误。
后台代码:
    @ResponseBody
	@RequestMapping("/save")
	public ResultResponse save(Photo photo,@RequestParam("imageFile")MultipartFile file,HttpServletRequest request)throws Exception{
		if(!file.isEmpty()){
			// 获取文件名
			String fileName = file.getOriginalFilename();
			// 获取文件的后缀名
			String suffixName = fileName.substring(fileName.lastIndexOf("."));
			String newFileName=DateUtil.getCurrentDateStr()+suffixName;
			FileUtils.copyInputStreamToFile(file.getInputStream(), new File(imageFilePath+newFileName));
			photo.setpUrl(newFileName);			
		}
        photo.setCreateDate(new Date());
		int result = photoService.save(photo);
		return new ResultResponse(result,"");
	}
另外这里的文件上传的参数@RequestParam("imageFile")不能是表里的参数,否则会报本地临时文件找不到错误。
添加页面:
28101514_Lu43.png
 

转载于:https://my.oschina.net/qinbao/blog/1544598

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值