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

随心笔谈11个月前发布 admin
91 0


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

© 版权声明

相关文章