ajax上传文件,图片并显示与删除(spring boot)

**

思路:先上传文件然后在读出来

**
之前本人都是用form提交上传文件,现在写个ajax的文件上传

先看下效果: 上传并在页面显示
在这里插入图片描述
关键代码:在启动类里面加入

//上传文件
	@Override
	 public void addResourceHandlers(ResourceHandlerRegistry registry) {
	     registry.addResourceHandler("/imctemp-rainy/**").addResourceLocations("file:D:/qqz7z8/");
	     //super.addResourceHandlers(registry);
	}

前端 html代码 :

<div id="app">
	<input type="file" name="file" id="file" multiple="multiple">
    <p id="url"><img src="" width=200></p>
    <input type="button" id="button" v-on:click="ff()" value="上传" >
</div>

前端 vue-ajax 代码 :

var vm=new Vue({
	 el:"#app",
	 data:{
		 
	 },
	 methods:{
		 ff:function(){
			 //alert(1);
			 var form = new FormData();
	            form.append("file", document.getElementById("file").files[0]);
	            alert($("#file").val());
	             $.ajax({
	                 url: "/ht/upload",      	//控制器路径  
	                 data: form,
	                 cache: false,
	                 async: false,				//同步异步  这里是同步
	                 type: "POST",              //类型,POST或者GET
	                 dataType: 'json',          //数据返回类型,可以是xml、json等
	                 processData: false,
	                 contentType: false,
	                 success: function (data) {      //成功,回调函数
	                     if (data) {
	                    	 var pic="/imctemp-rainy/"+data.fileName;   //获取图片路径
	                    	 alert(pic);
	                     	$("#url img").attr("src",pic);				//id为url的 改变属性 为图片+图片路径
	                     	// alert(JSON.stringify(data));
	                     } else {
	                     	alert("失败");
	                     }
	                 },
	                 error: function (er) {          //失败,回调函数
	                	 alert(JSON.stringify(data));
	                 }
	             });
		 }
	 }
})

后端 控制器 代码 :

	 //文件上传
		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 uploadImg(@RequestParam("file") MultipartFile file,HttpServletRequest request) {        
	  	    String contentType = file.getContentType(); 
	  	    System.out.println(contentType);
	  		String fileName = System.currentTimeMillis()+file.getOriginalFilename();  //可以改图片名字,改完要加后缀
	  		System.out.println(fileName);
	  		String filePath = "D:/qqz7z8";
		    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", filePath+"/"+fileName);
	  		} catch (Exception e) {  
	  		// TODO: handle exception        
	  	
	  		}   
	  		String str="/imctemp-rainy/"+fileName;
	
	  		//返回json
	  	    return jo;    
	
	  	}   

删除图片的后端代码

//删除
	@RequestMapping("delAll")
	@ResponseBody
	public String delAll(HttpServletRequest req) {
		int x=Integer.parseInt(req.getParameter("nid"));   //接收删除id
		News news= newsService.findById(x);
		String str1=news.getTuhref();     //得到图片的路径字段
		String str2[]=str1.split("/");	  //截取一部分   获取图片名
		File f=new File("D:/qqz7z8/"+str2[str2.length-1]);
		f.delete();			//删除
	    return "1"; 
	}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 AJAX 传递表单数据并存储到 Spring Boot 数据库中,可以按照以下步骤进行操作: 1. 在前端页面,使用 jQuery 或者其他 JavaScript 框架来编写 AJAX 请求,将表单数据作为参数传递给后端接口。 例如,可以使用 jQuery 的 `$.ajax()` 方法来发送 POST 请求,将表单数据作为 JSON 数据传递给后端接口: ``` $.ajax({ url: '/api/saveForm', method: 'POST', data: JSON.stringify(formData), contentType: 'application/json', success: function(response) { // 处理成功响应 }, error: function(jqXHR, textStatus, errorThrown) { // 处理错误响应 } }); ``` 其中 `formData` 是一个包含表单数据的 JavaScript 对象。 2. 在 Spring Boot 后端应用中,编写一个处理 POST 请求的控制器方法,用于接收前端传递的表单数据,并将其存储到数据库中。 例如,可以编写一个控制器方法如下: ``` @PostMapping("/api/saveForm") public ResponseEntity<?> saveForm(@RequestBody FormData formData) { // 将表单数据存储到数据库中 formDataRepository.save(formData); // 返回成功响应 return ResponseEntity.ok().build(); } ``` 其中 `FormData` 是一个 Java 类,用于表示表单数据,可以使用 `@RequestBody` 注解将前端传递的 JSON 数据自动转换成 Java 对象。`FormDataRepository` 则是一个 Spring Data JPA 的接口,用于操作数据库。 3. 在 Spring Boot 应用中配置数据库连接信息,并创建对应的表格。 例如,可以在 `application.properties` 配置文件中设置数据库连接信息: ``` spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=create spring.jpa.show-sql=true ``` 这里使用 MySQL 数据库,并设置了数据库连接信息。`spring.jpa.hibernate.ddl-auto` 参数设置为 `create`,表示在应用启动时自动创建表格。 4. 在 Spring Boot 应用中定义 `FormData` 实体类和 `FormDataRepository` 接口,并使用 `@Entity` 和 `@Repository` 注解进行标记。 例如,可以定义 `FormData` 类如下: ``` @Entity @Table(name = "form_data") public class FormData { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; private String email; // 省略 getter 和 setter 方法 } ``` 其中 `@Entity` 注解表示这是一个实体类,会映射到数据库中的表格。`@Table` 注解指定表格名称。`@Id` 和 `@GeneratedValue` 注解用于指定主键和自动生成策略。 定义 `FormDataRepository` 接口如下: ``` @Repository public interface FormDataRepository extends JpaRepository<FormData, Long> { } ``` 其中 `@Repository` 注解表示这是一个 Spring Data JPA 的仓库接口。`JpaRepository` 是 Spring Data JPA 提供的一个基本仓库接口,继承了 `PagingAndSortingRepository` 和 `CrudRepository` 接口,提供了一些基本的数据操作方法。 这样就可以使用 AJAX 传递表单数据并存储到 Spring Boot 数据库中了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值