springboot实现文件上传
简单的文件上传实现
·
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
简单的文件上传
使用springboot
提示:以下是本篇文章正文内容,下面案例可供参考
一、配置文件配置文件路径
#上传文件的路径,根据实际情况,自行修改
file.upload.dir=E:/zullfiletest/
file.upload.ip=127.0.0.1
file.upload.port=8083
二、编写文件上传controller
@PostMapping("/admin/upload/file")
public ApiRestResponse upload(HttpServletRequest httpServletRequest,
@RequestParam("file") MultipartFile file) {
//得到文件名称
String fileName = file.getOriginalFilename();
//获取文件后缀
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//生成文件名称UUID
UUID uuid = UUID.randomUUID();
//uuid + 文件前缀组成新的文件名
String newFileName = uuid.toString() + suffixName;
//根据配置文件中的路径创建文件对象(该对象意义是文件存放的路径)
File fileDirectory = new File(ProductConstant.FILE_UPLOAD_DIR);
//创建目标文件
File destFile = new File(ProductConstant.FILE_UPLOAD_DIR + newFileName);
//如果文件目录不存在 创建该文件目录 若创建失败 抛出异常
if (!fileDirectory.exists()) {
if (!fileDirectory.mkdir()) {
throw new ImoocMallException(ImoocMallExceptionEnum.MKDIR_FAILED);
}
}
try {
//把内存中图片写入磁盘
file.transferTo(destFile);
} catch (IOException e) {
e.printStackTrace();
}
try {
return ApiRestResponse
.success(getHost(new URI(httpServletRequest.getRequestURL() + "")) + "/category-product/images/"
+ newFileName);
} catch (URISyntaxException e) {
return ApiRestResponse.error(ImoocMallExceptionEnum.UPLOAD_FAILED);
}
}
/** mvc中的资源映射代码如下
* registry.addResourceHandler("/images/**")
* .addResourceLocations("file:" + ProductConstant.FILE_UPLOAD_DIR);
* @param uri
* @return
*/
private URI getHost(URI uri) {
URI effectiveURI;
try {
effectiveURI = new URI(uri.getScheme(), uri.getUserInfo(), ip, port,
null, null, null);
} catch (URISyntaxException e) {
effectiveURI = null;
}
return effectiveURI;
}
三、编写Mvc映射配置(直接把你本地访问文件路径连接暴露可能被黑客攻击)
import com.imooc.cloud.mall.practice.categoryproduct.common.ProductConstant;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* 描述: 配置地址映射
*/
@Configuration
public class ImoocMallWebMvcConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/images/**")
.addResourceLocations("file:" + ProductConstant.FILE_UPLOAD_DIR);
// registry.addResourceHandler("swagger-ui.html").addResourceLocations(
// "classpath:/META-INF/resources/");
// registry.addResourceHandler("/webjars/**").addResourceLocations(
// "classpath:/META-INF/resources/webjars/");
}
}
更多推荐
已为社区贡献6条内容
所有评论(0)