正文

使用ajax跨域调用springboot框架的api传输文件(ajax跨域请求cors)这都可以?

文章摘要

本文展示了如何使用Spring Boot构建一个简单的文件上传功能。文章通过配置MVC控制器和CORS映射,实现了从服务器端接收文件并将其上传到本地存储。代码中使用了`@SpringBootApplication`注解定义了主类,并在`@Bean`类中实现了`@WebMvcConfigurerAdapter`,用于处理文件读取和上传逻辑。此外,代码还包含了许多关键注解,如`@HelloWorld`用于日志记录和配置读取,`@CorsRegistry`用于跨域请求配置,以及`@MultipartConfigElement`用于处理 multipart 请求。文章还详细描述了文件上传的异常处理机制以及响应体的生成方式,确保了上传过程的可靠性和数据完整性。

 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; @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(” @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<MultipartFile> files=((MultipartHttpServletRequest)req).getFiles(“file”); MultipartFile file=files.get(0); // 返回信息头部 Map<String, String> header=new HashMap<String, 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; } }