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

这篇文章主要介绍了使用ajax跨域调用springboot框架的api传输文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

首先是前台页面的代码

 
 
  test_api
 
 
   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);
     }
    });
   }
 
 
 
 

  

   

    

    

   

   

    

    

   

   

    

    

   

  

sCompany:
scardtype:
file:

  
 

 

程序入口类的代码

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);
    //获取上传的文件集合
    List files = ((MultipartHttpServletRequest)req).getFiles(“file”);
    MultipartFile file = files.get(0);
    // 返回信息头部
    Map header = new HashMap();
    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;
  }
}

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

来源:脚本之家

链接:https://www.jb51.net/article/177174.htm

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:SEO优化专员,转转请注明出处:https://www.chuangxiangniao.com/p/897230.html

(0)
上一篇 2025年1月4日 00:55:00
下一篇 2025年1月4日 00:55:34

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Ajax工作原理及优缺点实例解析

    这篇文章主要介绍了Ajax工作原理及优缺点实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.Ajax是什么? 全称是 asynchronous javascript and xm…

    2025年1月4日
    100
  • ajax实现excel报表导出

    利用ajax实现excel报表导出【解决乱码问题】,供大家参考,具体内容如下 背景 项目中遇到一个场景,要导出一个excel报表。由于需要token验证,所以不能用a标签;由于页面复杂,所以不能使用表单提交。初步考虑前端使用ajax,后端返…

    编程技术 2025年1月4日
    100
  • ajax实现简单登录页面

    这篇文章主要为大家详细介绍了ajax实现简单登录页面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了ajax实现简单登录页面的具体代码,供大家参考,具体内容如下 一.什么是ajax Aja…

    编程技术 2025年1月4日
    100
  • AJAX实现数据的增删改查操作详解java后台

    这篇文章主要介绍了AJAX实现数据的增删改查操作,结合实例形式详细分析了ajax结合java后台实现数据库增删改查相关操作技巧,需要的朋友可以参考下 本文实例讲述了AJAX实现数据的增删改查操作。分享给大家供大家参考,具体如下: 主页:in…

    2025年1月4日
    100
  • ASP .NET Core API发布与部署以及遇到的坑和解决方法

    这篇文章主要介绍了ASP .NET Core API发布与部署以及遇到的坑和解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 最近在写.Net Core的API,…

    2025年1月4日 编程技术
    100
  • ajax异步实现文件分片上传实例代码

    这篇文章主要给大家介绍了关于ajax异步实现文件分片上传的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 前言 使用Ajax上传文件的应用场景颇多,比如上传用户…

    编程技术 2025年1月4日
    100
  • Ajax实现登录案例

    这篇文章主要为大家详细介绍了Ajax实现登录案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Ajax登录案例,供大家参考,具体内容如下 Msg package com.lbl.msg; public cl…

    2025年1月4日
    100
  • ajax post下载flask文件流以及中文文件名问题

    这篇文章主要介绍了ajax post下载flask文件流以及中文文件名问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 ajax post下载文件 后端返回文件流,flask中可使用 retur…

    编程技术 2025年1月4日
    100
  • Ajax实现文件上传功能(Spring MVC)

    这篇文章主要为大家详细介绍了Ajax实现文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了Ajax实现文件上传的具体代码,供大家参考,具体内容如下 前端表单 和 JQuery j…

    2025年1月4日
    200
  • bootstrapselect2动态从后台Ajax动态获取数据的代码

    这篇文章主要介绍了bootstrap select2 动态从后台Ajax动态获取数据的代码,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 效果图展示: 实现方式: 前端代码: 动态多选 <sele…

    2025年1月4日
    200

发表回复

登录后才能评论

联系我们

156-6553-5169

在线咨询: QQ交谈

邮件:253000106@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

联系微信