• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    使用ajax跨域调用springboot框架的api传输文件

    在新项目中使用的是springboot编写的api,涉及到ajax跨域请求和传输文件的问题,在这里记录一下
    首先是前台页面的代码

    !DOCTYPE html>
    html>
     head>
      meta charset="utf-8">
      title>test_api/title>
      script type="text/javascript" src="jquery-1.7.2.js">/script>
      script type="text/javascript">
       function test(){
        var obj = new Object;
        obj.name = $("#name").val();
        obj.age = $("#age").val();
        var file = document.getElementById("file").files[0];
        var formData = new FormData();
        formData.append("data",JSON.stringify(obj));
        formData.append("file",file);
        $.ajax({
         type:"post",
         url:"http://localhost:8187/test/upload",
         contentType:false,
         processData:false,
         data:formData,
         success:function(data){
           alert(data.msg);
         }
        });
       }
      /script>
     /head>
     body>
      div class="">
       table>
        tr>
         td>sCompany:/td>
         td>input type="text" id="name" value="tom" />/td>
        /tr>
        tr>
         td>scardtype:/td>
         td>input type="text" id="age" value="23" />/td>
        /tr>
        tr>
         td>file:/td>
         td>input type="file" id="file" />/td>
        /tr>
       /table>
       input type="button" onclick="test();" value="提交" />
      /div>
     /body>
    /html>

    程序入口类的代码

    package test;
    
    import javax.servlet.MultipartConfigElement;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.web.servlet.MultipartConfigFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.web.servlet.config.annotation.CorsRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    
    /**
     * Hello world!
     *
     */
    
    @SpringBootApplication
    public class App 
    {
    
      public static void main( String[] args )
      {
        SpringApplication.run(App.class, args);
      }
      //设置ajax跨域请求
      @Bean
      public WebMvcConfigurer corsConfigurer(){
        return new WebMvcConfigurerAdapter(){
    
          @Override
          public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**").allowedOrigins("*");
          }
        };
      }
    
      @Bean
      public MultipartConfigElement multipartConfigElement(){
        MultipartConfigFactory factory = new MultipartConfigFactory();
        //设置上传文件大小限制
        factory.setMaxFileSize("10MB");
        //设置上传总数据大小
        factory.setMaxRequestSize("15MB");
        return factory.createMultipartConfig();
      }
    }

    api代码

    package test.controller;
    
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import javax.servlet.http.HttpServletRequest;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    import org.springframework.web.multipart.MultipartHttpServletRequest;
    import test.model.UploadInfo;
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONObject;
    
    @RestController
    @RequestMapping("/test")
    public class TestController {
    
      /**
       * 上传文件
       * @param req form请求
       * @return json字符串
       */
      @RequestMapping(value="/upload", method=RequestMethod.POST)
      public String uploadFile(HttpServletRequest req){ 
        // 返回结果用 json对象
        JSONObject returnObj = new JSONObject();
        //从请求中获取请求的json字符串
        String strData = req.getParameter("data");
        //将获取到的JSON字符串转换为Imgidx对象
        UploadInfo info = JSON.parseObject(strData, UploadInfo.class);
        //获取上传的文件集合
        ListMultipartFile> files = ((MultipartHttpServletRequest)req).getFiles("file");
        MultipartFile file = files.get(0);
        // 返回信息头部
        MapString, String> header = new HashMapString, String>();
        header.put("code", "0");
        header.put("msg", "success");
        File file1234 = new File(file.getOriginalFilename());
        //插入数据的影响的数据条数
        int result = 0;
        //将文件上传到save
        if(!file.isEmpty()){
          try{
            byte[] arr = new byte[1024];
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file1234));
            bos.write(arr);
            bos.flush();
            bos.close();
          }catch(Exception e){
            header.put("code", "-1");
            header.put("msg", "errorMsg:" + e.getMessage());
          }
        }else{
          header.put("code", "-1");
          header.put("msg", "errorMsg:上传文件失败,因为文件是空的");
        }
        String returnStr = returnObj.toJSONString(header);
        return returnStr;
      }
    }

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • ThinkPHP 5 AJAX跨域请求头设置实现过程解析
    • PHP Ajax跨域问题解决方案代码实例
    • 原生js实现ajax请求和JSONP跨域请求操作示例
    • PHP下ajax跨域的解决方案之window.name实例分析
    • PHP下ajax跨域的解决方案之jsonp实例分析
    • express如何解决ajax跨域访问session失效问题详解
    • Ajax跨域问题及解决方案(jsonp,cors)
    • Ajax解决跨域之设置CORS响应头实现跨域案例详解
    上一篇:bootstrap select2 动态从后台Ajax动态获取数据的代码
    下一篇:ThinkPHP5 通过ajax插入图片并实时显示(完整代码)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    使用ajax跨域调用springboot框架的api传输文件 使用,ajax,跨域,调用,springboot,