1、pom依赖

<!--fastdfs-->
<dependency>
<groupId>com.github.tobato</groupId>
<artifactId>fastdfs-client</artifactId>
<version>1.26.6</version>
</dependency>

2、application.properties

server.port=8082
#超时时长
fdfs.so-timeout=1500
#连接tracker服务器超时时长
fdfs.connect-timeout=600
#缩略图
fdfs.thumb-image.height=150
fdfs.thumb-image.width=150
#tracker服务配置地址列表,替换成自己服务的IP地址,支持多个
fdfs.tracker-list=192.168.206.173:22122
#文件上传配置
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=20MB

3、工具类

@Component
public class FastdfsUtils
{
public static final String DEFAULT_CHARSET = "UTF-8"; @Autowired
private FastFileStorageClient fastFileStorageClient; /**
* 上传
*
* @param file
* @return
* @throws IOException
*/
public StorePath upload(MultipartFile file)
throws IOException
{
// 设置文件信息
Set<MetaData> mataData = new HashSet<>();
mataData.add(new MetaData("author", "fastdfs"));
mataData.add(new MetaData("description", file.getOriginalFilename()));
// 上传
StorePath storePath = fastFileStorageClient.uploadFile(
file.getInputStream(), file.getSize(),
FilenameUtils.getExtension(file.getOriginalFilename()),
null);
return storePath;
} /**
* 删除
*
* @param path 例如: group1/M00/00/00/wKjOrWD45PKAY4xmAFLQaGXPnu0735.jpg
*/
public void delete(String path)
{
fastFileStorageClient.deleteFile(path);
} /**
* 删除
*
* @param group 例如: group1
* @param path 例如: M00/00/00/wKjOrWD45PKAY4xmAFLQaGXPnu0735.jpg
*/
public void delete(String group, String path)
{
fastFileStorageClient.deleteFile(group, path);
} /**
* 文件下载
*
* @param path 文件路径,例如:group1/M00/00/00/wKjOrWD40JiAQNKLABO5RCqSdcQ975.jpg
* @param filename 下载的文件命名
* @return
*/
public void download(String path, String filename, HttpServletResponse response)
throws IOException
{
// 获取文件
StorePath storePath = StorePath.parseFromUrl(path);
//如果名字是空的 下载文件名以存储的为准
if (StringUtils.isBlank(filename))
{
filename = FilenameUtils.getName(storePath.getPath());
}
else
{
filename = filename + storePath.getPath().substring(storePath.getPath().lastIndexOf("."));
}
byte[] bytes =
fastFileStorageClient.downloadFile(storePath.getGroup(), storePath.getPath(), new DownloadByteArray());
response.reset();
response.setContentType("applicatoin/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8"));
ServletOutputStream out = response.getOutputStream();
out.write(bytes);
out.close();
}
}

4、controller层代码

@RestController
public class FileController
{
private static final Logger LOGGER = LoggerFactory.getLogger(FileController.class); @Resource
private FastdfsUtils fastdfsUtils; @PostMapping("uploadFile")
private StorePath uploadFile(MultipartFile file)
{
StorePath storePath = null;
try
{
storePath = fastdfsUtils.upload(file);
}
catch (Exception e)
{
e.printStackTrace();
LOGGER.info("服务异常");
}
return storePath;
} @PostMapping("deleteByPath")
private String deleteByPath(String path)
{
try
{
fastdfsUtils.delete(path);
}
catch (Exception e)
{
e.printStackTrace();
LOGGER.info("删除异常");
}
return "success";
} @GetMapping("downloadFile")
private void downloadFile(String path, String name, HttpServletResponse response)
{
try
{
fastdfsUtils.download(path, name, response);
}
catch (Exception e)
{
e.printStackTrace();
LOGGER.info("下载异常");
}
}
}

最新文章

  1. What is a Database Trigger?
  2. 处理dataTable的行和列数据
  3. 【HDU4630 No Pain No Game】 dp思想+线段树的离线操作
  4. Displaying Alerts with UIAlertView
  5. android gridview按钮边框和定制点击颜色
  6. 谈谈文件增量同步算法:RSYNC和CDC
  7. script标签跨域的缺点
  8. DOM-----style属性对照表
  9. Spring源码学习:第0步--环境准备
  10. 分布式缓存技术之Redis_01数据结构分析
  11. Luogu P4859「已经没有什么好害怕的了」
  12. 论坛短信息(JSP项目)
  13. linux基础01-bash特性
  14. 【代码笔记】iOS-Label随字自动变大
  15. bzoj千题计划257:bzoj4199: [Noi2015]品酒大会
  16. Good Time 冲刺 五
  17. BZOJ 2843: 极地旅行社 lct splay
  18. Ubuntu 18.04 gcc降级为4.8.5版本
  19. 【英语】Bingo口语笔记(84) - 惊讶的表达
  20. iOS:实现图片的无限轮播

热门文章

  1. HCIE笔记-第二节-数据封装+传输介质
  2. android软件简约记账app开发day09-主页面模块,收支记账信息的展示
  3. 2021.12.15 P2328 [SCOI2005]超级格雷码(找规律填空)
  4. 【HCIE】ipv6之6to4隧道如何计算48位前缀地址
  5. 攻防世界-MISC:embarrass
  6. 论文解读(GMT)《Accurate Learning of Graph Representations with Graph Multiset Pooling》
  7. Hive 3.x 配置&amp;详解
  8. java、selenium、图片滑块验证,底部附本地可测试代码
  9. WinUI迁移到即将&quot;过时&quot;的.NET MAUI个人体验
  10. .Net 在容器中操作宿主机