使用ajax跨域调用springboot框架的api传输文件
在新项目中使用的是springboot编写的api,涉及到ajax跨域请求和传输文件的问题,在这里记录一下
首先是前台页面的代码
test_api functiontest(){ varobj=newObject; obj.name=$("#name").val(); obj.age=$("#age").val(); varfile=document.getElementById("file").files[0]; varformData=newFormData(); 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:
程序入口类的代码
packagetest; importjavax.servlet.MultipartConfigElement; importorg.springframework.boot.SpringApplication; importorg.springframework.boot.autoconfigure.SpringBootApplication; importorg.springframework.boot.web.servlet.MultipartConfigFactory; importorg.springframework.context.annotation.Bean; importorg.springframework.web.servlet.config.annotation.CorsRegistry; importorg.springframework.web.servlet.config.annotation.WebMvcConfigurer; importorg.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; /** *Helloworld! * */ @SpringBootApplication publicclassApp { publicstaticvoidmain(String[]args) { SpringApplication.run(App.class,args); } //设置ajax跨域请求 @Bean publicWebMvcConfigurercorsConfigurer(){ returnnewWebMvcConfigurerAdapter(){ @Override publicvoidaddCorsMappings(CorsRegistryregistry){ registry.addMapping("/**").allowedOrigins("*"); } }; } @Bean publicMultipartConfigElementmultipartConfigElement(){ MultipartConfigFactoryfactory=newMultipartConfigFactory(); //设置上传文件大小限制 factory.setMaxFileSize("10MB"); //设置上传总数据大小 factory.setMaxRequestSize("15MB"); returnfactory.createMultipartConfig(); } }
api代码
packagetest.controller; importjava.io.BufferedOutputStream; importjava.io.File; importjava.io.FileOutputStream; importjava.util.HashMap; importjava.util.List; importjava.util.Map; importjavax.servlet.http.HttpServletRequest; importorg.springframework.web.bind.annotation.RequestMapping; importorg.springframework.web.bind.annotation.RequestMethod; importorg.springframework.web.bind.annotation.RestController; importorg.springframework.web.multipart.MultipartFile; importorg.springframework.web.multipart.MultipartHttpServletRequest; importtest.model.UploadInfo; importcom.alibaba.fastjson.JSON; importcom.alibaba.fastjson.JSONObject; @RestController @RequestMapping("/test") publicclassTestController{ /** *上传文件 *@paramreqform请求 *@returnjson字符串 */ @RequestMapping(value="/upload",method=RequestMethod.POST) publicStringuploadFile(HttpServletRequestreq){ //返回结果用json对象 JSONObjectreturnObj=newJSONObject(); //从请求中获取请求的json字符串 StringstrData=req.getParameter("data"); //将获取到的JSON字符串转换为Imgidx对象 UploadInfoinfo=JSON.parseObject(strData,UploadInfo.class); //获取上传的文件集合 Listfiles=((MultipartHttpServletRequest)req).getFiles("file"); MultipartFilefile=files.get(0); //返回信息头部 Map header=newHashMap (); header.put("code","0"); header.put("msg","success"); Filefile1234=newFile(file.getOriginalFilename()); //插入数据的影响的数据条数 intresult=0; //将文件上传到save if(!file.isEmpty()){ try{ byte[]arr=newbyte[1024]; BufferedOutputStreambos=newBufferedOutputStream(newFileOutputStream(file1234)); bos.write(arr); bos.flush(); bos.close(); }catch(Exceptione){ header.put("code","-1"); header.put("msg","errorMsg:"+e.getMessage()); } }else{ header.put("code","-1"); header.put("msg","errorMsg:上传文件失败,因为文件是空的"); } StringreturnStr=returnObj.toJSONString(header); returnreturnStr; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。