基于Spring Boot利用 ajax实现上传图片功能

效果如下:

1.启动类中加入

SpringBoot重写addResourceHandlers映射文件路径

@Override
 public void addResourceHandlers(ResourceHandlerRegistry registry) {
   registry.addResourceHandler("/imctemp-rainy/**").addResourceLocations("file:D:/E/");
 }

设置静态资源路径

2.   表单 前端 页面

<input type="file" name="file" id="file">
<p id="url"><img src="" width=200></p>
<input type="button" id="button" value="上传" >
$(function () {
    $("#button").click(function () {
      var form = new FormData();
      form.append("file", document.getElementById("file").files[0]);
       $.ajax({
         url: "/stu/upload",    //后台url
         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;
           $("#url img").attr("src",pic);
           // 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.print(contentType);
  String fileName = System.currentTimeMillis()+file.getOriginalFilename();
  String filePath = "D:/E";
   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    

  }  

  //返回json
    return jo;
  }  

总结

以上所述是小编给大家介绍的基于Spring Boot利用 ajax实现上传图片功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • spring boot实现上传图片并在页面上显示及遇到的问题小结

    最近在使用spring boot搭建网站的过程之中遇到了这样一个问题:用户注册时需要上传一个属于自己的头像,注册成功之后跳转到个人中心,在个人中心中显示用户信息.其中在显示头像的时候遇到了问题:上传头像的时候,我把头像存放到了项目文件下的static文件夹中,将其地址存放到了数据库对应的用户中,并且在idea中添加了热部署,但是在注册跳转到个人中心后还是无法显示头像,只有在下一次启动项目进入到个人中心时才可以. 被这个问题困扰了许久,最后是这样的解决的:在main目录下新建了一个webapp文件

  • Spring boot的上传图片功能实例详解

    简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者. 特点 1. 创建独立的Spring应用程序 2. 嵌入的Tomcat,无需部署WAR文件 3. 简化Maven配置 4. 自动配置Spring 5. 提

  • SpringBoot+SpringSecurity处理Ajax登录请求问题(推荐)

    最近在项目中遇到了这样一个问题:前后端分离,前端用Vue来做,所有的数据请求都使用vue-resource,没有使用表单,因此数据交互都是使用JSON,后台使用Spring Boot,权限验证使用了Spring Security,因为之前用Spring Security都是处理页面的,这次单纯处理Ajax请求,因此记录下遇到的一些问题.这里的解决方案不仅适用于Ajax请求,也可以解决移动端请求验证. 创建工程 首先我们需要创建一个Spring Boot工程,创建时需要引入Web.Spring S

  • Springboot解决ajax+自定义headers的跨域请求问题

    1.什么是跨域 由于浏览器同源策略(同源策略,它是由Netscape提出的一个著名的安全策略.现在所有支持JavaScript 的浏览器都会使用这个策略.所谓同源是指,域名,协议,端口相同.),凡是发送请求url的协议.域名.端口三者之间任意一与当前页面地址不同即为跨域. 具体可以查看下表: 2.springboot如何解决跨域问题 1.普通跨域请求解决方案: ①请求接口添加注解@CrossOrigin(origins = "http://127.0.0.1:8020", maxAge

  • SpringBoot解决ajax跨域问题的方法

    SpringBoot解决ajax跨域,供大家参考,具体内容如下 一.第一种方式 1.编写一个支持跨域请求的 Configuration import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.anno

  • bootstrap fileinput组件整合Springmvc上传图片到本地磁盘

    整合前的准备步骤 1.搭建好基础框架,本文用的是SSM(Spring+SpringMVC+Mybatis),这里的过程就不在本文中讲了,之前我做个一个demo(ssm整合+用户模块),可以参考这个搭建好. 2.下载bootstrap fileinput组件源码: https://github.com/kartik-v/bootstrap-fileinput/ 搭建后的效果图 图1. 图2. 图3. 图4. 图5. 在需要编写的jsp页面引入组件 本工程的路径界面如下: 在jsp引入组件需要的js

  • 详解Spring Boot 2.0.2+Ajax解决跨域请求的问题

    问题描述 后端域名为A.abc.com,前端域名为B.abc.com.浏览器在访问时,会出现跨域访问.浏览器对于javascript的同源策略的限制. HTTP请求时,请求本身会返回200,但是返回结果不会走success,并且会在浏览器console中提示: 已拦截跨源请求:同源策略禁止读取位于 https://www.baidu.com/ 的远程资源.(原因:CORS 头缺少 'Access-Control-Allow-Origin'). 解决方案 1.jsonp 2.引用A站的js 3.N

  • jquery+ajaxform+springboot控件实现数据更新功能

    应用背景 使用springboot架构在如下图所示的界面布局中,实现数据的保存或者更新,务必需要提交到后台,如何进行成功或失败的提示呢?如果使用传统的springmvc的模式,势必要传一个页面给前端,这个页面仅仅是提示操作是否成功了!提示之后还得更新一下数据,就好比我们浏览某些网站的时候给出的一些提示 操作成功,5秒后返回 . 比较傻,客户体验也比较差劲. 改造历程 使用ajax能否解决上述的问题呢? 答案是肯定的,点击保存之后,一个ajax请求到后台,使用ResponseBody标签,限制返回

  • AJAX +SpringMVC 实现bootstrap模态框的分页查询功能

    一 .效果图 二.JS function getManagerList(dealerId,page2){ macAddress = document.getElementById("activeXDemo").getMac(); $.get("${ctxPath}/common/dealer/manager?"+Math.random(), { page2: page2, pageSize2: 9, dealerId: dealerId, macAddress:ma

  • spring boot ajax跨域的两种方式

    前言 java语言在多数时,会作为一个后端语言,为前端的php,node.js等提供API接口.前端通过ajax请求去调用java的API服务.今天以node.js为例,介绍两种跨域方式:CrossOrigin和反向代理.  一.准备工作 pom.xml: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0&quo

随机推荐