Spring Boot图片上传和取消上传

本文介绍了在Spring Boot项目中实现图片上传和取消上传的功能。通过在pom文件添加依赖,设置Controller层处理文件上传,并展示如何在HTML页面中实现预览、保存到文件夹及删除图片操作。最后,描述了点击提交时将图片信息保存到数据库的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring Boot图片上传和取消上传

pom 文件中加上依赖

<!-- 文件上传 -->
	<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
	<dependency>
	    <groupId>commons-fileupload</groupId>
	    <artifactId>commons-fileupload</artifactId>
	    <version>1.4</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
	<dependency>
	    <groupId>commons-io</groupId>
	    <artifactId>commons-io</artifactId>
	    <version>2.6</version>
	</dependency>

controller层

下面的获取当前的系统日期,是为了给图片重命名,防止多次上传同一张图片导致的图片名都一样。

public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception {        
	File targetFile = new File(filePath); 
	if (!targetFile.exists()) {
	   targetFile.mkdirs();    
	}        
	FileOutputStream out = new FileOutputStream(filePath +"/"+ fileName);
	out.write(file);      
	out.flush();   
	out.close(); 
}
//处理文件上传
@ResponseBody //返回json数据  
@RequestMapping(value = "upload", method = RequestMethod.POST) 
public JSONObject uploadImg1(@RequestParam("file") MultipartFile file,HttpServletRequest request) {        
    String contentType = file.getContentType(); 
    //System.out.print(contentType);
    
    //获取当前系统日期
    SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//设置日期格式
    String timeString=df.format(new Date());// new Date()为获取当前系统时间
    
    //设置图片名
	String fileName = timeString+file.getOriginalFilename();  		
	String filePath = "D:/a";		//路径
    JSONObject jo = new JSONObject();//实例化json数据

	if (file.isEmpty()) {   
		jo.put("success", 0);
		jo.put("fileName", "");
	}        
	try {  
	   uploadFile(file.getBytes(), filePath, fileName);  
	   jo.put("success", 1);
	   jo.put("fileName", fileName);
	   jo.put("xfileName", "/imctemp-rainy/"+fileName);
	  // System.out.println(filePath+"/"+fileName);
	} catch (Exception e) {  
	// TODO: handle exception        

	}   
	//返回json
    return jo;    

}
		
 /**
 * 删除单个文件
 *
 * @param fileName
 *            要删除的文件的文件名
 * @return 单个文件删除成功返回true,否则返回false
 */
@ResponseBody //返回json数据  
@RequestMapping(value = "deleteFile", method = RequestMethod.POST) 
public String deleteFile(String path) {
	String resultInfo = null;
	//判断图片是否存在
	if (path.equals("no_img.png")) {
		resultInfo = "请选择图片!";
	}else {
		String sb = "D:/a/" + path;
		//System.out.println(sb);
		File file = new File(sb);
		if (file.exists()) {
			if (file.delete()) {
				resultInfo =  "删除成功";
			} else {
				resultInfo =  "删除失败";
			}
		} else {
			resultInfo = "文件不存在!";
		}
	}
	return resultInfo;
}

HTML页面

<div class="form-group">
    <div class="label">
      <label>上传图片:</label>
    </div>
    <div class="field">
        <input type="file" name="file" id="file">
		<p id="url" ><img :src="banner1.bpic" id="imgsrc" width=200></p>
		<input type="button" id="button" @click="tupian()" value="上传" ><input type="button" @click="quxiao()" value="取消">
      <div class="tips"></div>
    </div>
  </div> 
  <div class="form-group">
    <div class="label">
      <label></label>
    </div>
    <div class="field">
      <button class="button bg-main icon-check-square-o" type="button" @click="nadd()"> 提交</button>
    </div>
  </div>
  
  
<!--VUE-->
<script>
var vm=new Vue({
el:"#add",
data:{
	banner1:{},
},
methods:{
	quxiao:function(){
		var imgsrc=$("#imgsrc").attr("src");
		var str_after=imgsrc.split("/");
		var str_img=str_after[str_after.length-1];
		//alert(str_img);
		$.post("/model/deleteFile",{path:str_img},function(data){
			$("#url img").attr("src","/imctemp-rainy/no_img.png");
			vm.navigation.imgsrc="";
			alert(data);
		})
	},
	//下载图片
	tupian:function(){
		var form = new FormData();
        form.append("file", document.getElementById("file").files[0]);
         $.ajax({
             url: "/model/upload",        //后台url
             data: form,
             cache: false,
             async: false,
             type: "POST",                   //类型,POST或者GET
             dataType: 'json',              //数据返回类型,可以是xml、json等
             processData: false,
             contentType: false,
             success: function (data) {      //成功,回调函数
            	 //alert(data.xfileName);
                 if (data) {
                	var pic="/imctemp-rainy/"+data.fileName;
                 	$("#url img").attr("src",pic);
                 	vm.banner1.bpic=data.xfileName;
                 	
                 	// alert(JSON.stringify(data));

                 } else {
                 	alert("失败");
                 }
                 
             },
             error: function (er) {          //失败,回调函数
            	 alert(JSON.stringify(data));
             }
         });
	},
	nadd:function(){
		
		$.post("/home/badd",{banner1:JSON.stringify(vm.banner1)},function(data){
			if(data.success==1){
				alert(data.message);
				window.location.href="/model/type";
			}else{
				alert(data.message);
			}
		})
	}
},
});
</script>

在这里插入图片描述
具体效果就是

  • 点击浏览,上传 显示图片并保存到文件夹
  • 点击取消 从文件夹删除
  • 点击提交 保存到数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值