springboot上传文件代码详情

关于 spring boot 文件的上传

首先创建一个上传工具类
import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;

public class FileUploadUtil {
public static Map<String,Object> uploadApk(MultipartFile myfiles, HttpServletRequest request,HttpServletResponse response)
{
Map<String, Object> resMap = new HashMap<String, Object>();
if(myfiles.getSize()>102410245){
resMap.put(“code”, 500);
resMap.put(“msg”, “文件过大,请上传5M以内的图片”);
System.out.println(“文件上传失败”);
return resMap;
}
String path = request.getContextPath();
String basePath = request.getScheme() + “?/” + request.getServerName() + “:” + request.getServerPort() + path;
Date dt = new Date();
Long time = dt.getTime();
if (myfiles != null) {
String realPath =“d://uploadFiles//”;
if (myfiles.isEmpty()) {
// 未选择文件
resMap.put(“code”, 400);
resMap.put(“msg”, “未选择文件”);
}else{

                String originalFilename = time.toString().substring(time.toString().length() - 8,
                        time.toString().length());
                originalFilename = originalFilename.concat(".");
                originalFilename = originalFilename.concat(myfiles.getOriginalFilename().toString().substring(myfiles.getOriginalFilename().toString().indexOf(".") + 1));
                try {
                	// 这里使用Apache的FileUtils方法来进行保存
                	FileUtils.copyInputStreamToFile(myfiles.getInputStream(), new File(realPath, originalFilename));
                	resMap.put("code", 200);
                	resMap.put("msg", "上传成功");
                	resMap.put("filename", originalFilename);
                	resMap.put("path", basePath + "/static/image/"+originalFilename );

                	} catch (IOException e) {
                    resMap.put("code", 500);
                	System.out.println("文件上传失败");
                	resMap.put("msg", "文件上传失败");
                	e.printStackTrace();
                	}
                			
			}
		
	}
	
	
        return resMap;

}

}

写一个控制层
@RestController
public class FileUploadController {

@RequestMapping("/api/test")
public  Map<String ,Object> test(MultipartFile myfiles, HttpServletRequest request,
       HttpServletResponse response){
	//Map<String,Object > resultMap  =new HashMap<>();
    Map<String,Object > resultMap=FileUploadUtil.uploadApk(myfiles, request, response);
	ResponseResult  rr=new ResponseResult();
	return resultMap;
}

}
写完以上代码之后还需要配置映射关系
在application.properties 中

file.staticAccessPath=/static/image/**
#file.uploadFolder=/root/uploadFiles/
file.uploadFolder=d://uploadFiles/
spring.mvc.static-path-pattern=/webapp/**

对于跨域访问和映射关系 需要配置WebMvcConfiger
@Configuration
public class WebMvcConfig implements WebMvcConfigurer{

@Value("${file.staticAccessPath}")
 private String staticAccessPath;
 @Value("${file.uploadFolder}")
 private String uploadFolder;

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler(staticAccessPath).addResourceLocations("file:" + uploadFolder);
}

@Override
public void addCorsMappings(CorsRegistry registry) {
	
	registry.addMapping("/api/**").allowedHeaders("*").allowedMethods("*").allowedOrigins("*");
}

}
上述工作完成之后就可以进行测试

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值