这里就直接贴代码吧。

引用jar包:net.anumbrella.seaweedfs.core.FileTemplate;

一、SeaweedFS 上传附件接口

    @Autowiredprivate FileTemplate template;/*** @Description: 上传附件接口* @Date: 2019/12/19*/@PostMapping("/upload")@ApiOperation(value = "上传附件接口", notes = "上传附件,上传成功返回附件id")public RestResponse<FileHandleStatus> uploadFile(@RequestParam(name = "fileId",required = false) String fileId, @RequestParam("excelFile") MultipartFile file) throws IOException {try {if (file.isEmpty()) {return RestResponse.fail().setMsg("上传文件不能为空!");}if (!StringUtils.isEmpty(fileId)){return RestResponse.ok(template.updateFileByStream(fileId,file.getOriginalFilename(),file.getInputStream()));}ContentType contentType = ContentType.create("application/x-www-form-urlencoded", Consts.ISO_8859_1);return RestResponse.ok(template.saveFileByStream(file.getOriginalFilename(), file.getInputStream(),contentType));} catch (Exception e) {logger.error("上传附件失败", e);return RestResponse.fail().setMsg("上传附件服务连接关闭");}}

二、SeaweedFS  下载附件接口

    @Autowiredprivate FileTemplate template;    /*** @Description: 上传附件接口* @Date: 2019/12/19*/@GetMapping("/getFileInfo/{fileId}")@ApiOperation(value="公共下载附件接口",notes = "公共下载附件接口")@ApiImplicitParams(value = {@ApiImplicitParam(name = "fileId", value = "附件id", dataType = "String", required = true)})public RestResponse<SeaweedResponse> getFileInfo(@PathVariable String fileId) throws IOException {FileHandleStatus status = template.getFileStatus(fileId);String name = new String(status.getFileName().substring(8,status.getFileName().length()-1).getBytes("iso-8859-1"),"utf-8");SeaweedResponse response = new SeaweedResponse();if (status != null){response.setFileId(status.getFileId());response.setFileName(name);response.setFilePath(template.getFileUrl(fileId));}return RestResponse.ok(response);}

ps:

解决升级seaweed服务器,导致的获取附件名称时get (“Content-Disposition”) 报 NullPointerException 的问题(完善)

/*** 获取附件的详情* @return*/@GetMapping("/getFileInfo/{fileId}")@ApiOperation(value="公共下载附件接口",notes = "下载附件接口")@ApiImplicitParams(value = {@ApiImplicitParam(name = "fileId", value = "附件id", dataType = "String", required = true)})public RestResponse<SeaweedResponse> getFileInfo(@PathVariable String fileId) throws IOException {CloseableHttpClient client = null;String name = "未命名";try {String url = getTemplate().getFileUrl(fileId);client = HttpClientBuilder.create().build();HttpGet get = new HttpGet(url);get.addHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36");HttpResponse response = client.execute(get);String s = response.getFirstHeader("Content-Disposition").getValue();name = new String(s.substring(18,s.length()-1).getBytes("iso-8859-1"), "utf-8");}catch (Exception e){reConnect();logger.error("公共下载附件出错",e);}finally {if(client != null){client.close();}}SeaweedResponse response = new SeaweedResponse();response.setFileId(fileId);response.setFileName(name);response.setFilePath(getTemplate().getFileUrl(fileId));return RestResponse.ok(response);}

三、SeaweedFS 删除附件接口

    @Autowiredprivate FileTemplate template;/*** @Description: 上传附件接口* @Date: 2019/12/19*/@PostMapping("/delete")@ApiOperation(value="公共删除附件接口",notes = "删除附件接口")public RestResponse deleteFile(@RequestParam(name = "fileId") String fileId) throws IOException {if (StringUtils.isEmpty(fileId)) {return RestResponse.fail().setMsg("fileId 参数不能为空");}template.deleteFile(fileId);return RestResponse.ok("删除成功");}

我是进阶的球儿,大家一起2019年的爬坑历程。感觉分享很给力的话给个赞,谢谢!!!有问题也可以下方留言或者加本人QQ:313989006 进行沟通。

SeaweedFS 分布式 上传、下载、删除附件公共接口相关推荐

  1. vue 上传下载删除附件 用到blob

    接口 export function uploadFileEvaluation(data) { return request({ url: `${prefix}/tqmevaluation/uploa ...

  2. springboot---fastDFS 简单文件上传/下载/删除

    本来想简单的记录一下上传/下载,后来看着看着,发现这块的知识点太多.就记录下简单的操作,后面在补充 这里采用fastdfs分布式文件系统的形式来进行操作的(关于fastdfs的知识点有很多,这里就不赘 ...

  3. 微信小程序文件云存储-上传下载删除功能

    文件云存储 云存储提供高可用.高稳定.强安全的云端存储服务,支持任意数量和形式的非结构化数据存储,如视频和图片,并在控制台进行可视化管理.云存储包含以下功能: 存储管理:支持文件夹,方便文件归类.支持 ...

  4. 基于Django的文件上传下载删除管理器

    这是一个基于Django的文件下载,上传,删除的任务管理器 先看看效果展示 1.运行完Django后,直接输入网址http://127.0.0.1:8000 就可以直接进去该网站 2.这是一个主图 上 ...

  5. 阿里云oss简单的上传下载删除(java)

    阿里云oss上传和下载. 配置maven <!-- https://mvnrepository.com/artifact/com.aliyun.oss/aliyun-sdk-oss --> ...

  6. 阿里云oss 使用, 基于Nginx 配置云服务器+oss的内网访问 , 及使用Java SDK 完成上传,下载,删除,查询文件列表操作

    一.同阿里产品,云服务器和存储对象oss-配置内网访问 阿里存储对象oss 地址: https://oss.console.aliyun.com/overview 配置须知 通过Nginx 进行网络转 ...

  7. Day228229.上传查询医院接口、上传查询删除科室接口、上传查询删除排班接口 -尚医通

    尚医通 一.上传医院接口 参考<尚医通API接口文档.docx>业务接口4.1上传医院 参考<医院接口模拟系统.docx>进行接口测试与数据上传 这里要整合hospital-m ...

  8. Struts2 文件上传,下载,删除

    本文介绍了: 1.基于表单的文件上传 2.Struts 2 的文件下载 3.Struts2.文件上传 4.使用FileInputStream FileOutputStream文件流来上传 5.使用Fi ...

  9. java操作文件_java操作FTP,实现文件上传下载删除操作

    上传文件到FTP服务器: /** * Description: 向FTP服务器上传文件 * @param url FTP服务器hostname * @param port FTP服务器端口,如果默认端 ...

  10. minio对象存储单机部署并设置开机自启动及集成spring boot进行(创建删除桶)(上传下载删除文件)

    目录 1.minio简介 2.minio特性 3.下载及部署 4.配置开机自启动 5.集成Springboot 1.minio简介 MinIO 是在GNU Affero 通用公共许可证 v3.0下发布 ...

最新文章

  1. excel打不开怎么修复_SD卡坏了怎么办?一招教你拯救文件!
  2. linux shel的学习网站(推荐)
  3. 机器学习-算法背后的理论与优化(part4)--结构风险最小(上)
  4. Enterprise search - Build Search dropdown list - cache issue
  5. 2017韩老师计算机网络,2017年计算机等考三级网络技术辅导:计算机网络拓扑结构...
  6. 【2017-3-2】集合 结构体 枚举
  7. VSCode配置Python开发环境
  8. 服务器 通知系统设计,组列表管理服务器的设计与实现
  9. 在线画板_在线画画_在线画图工具-速写板
  10. 【Testin云测活动】邀请好友使用Testin云测,得iPhone6!
  11. 18个最好的代码编辑器/IDE工具,希望你会喜欢。
  12. 基于Python中docx与docxcompose批量合并多个Word文档文件并逐一添加分页符
  13. PADS VX2.3在WIN 10闪退解决方法
  14. Win8下装XP双系统
  15. 有限元固体力学计算软件code_aster集成平台Salome_meca的安装问题记录
  16. 知新温故,从知识图谱到图数据库
  17. Geometry(几何对象定义空间位置和关联几何形状)
  18. 改变程序员的十大电影与科普视频
  19. Android MobSDK已停止支持非严格模式版本,请按上面编译告示接入合规版本
  20. 如何快速保存PPT中的图片资源

热门文章

  1. 达内php第一次月考题,五年级英语下册第一次月考题
  2. canvas绘制表盘时钟
  3. 前端开发必备(三)-----用js验证表单是否为空以及验证码是否输入正确
  4. Java对接网易云信IM 即时通讯
  5. 免费的office软件哪个好用
  6. LZJ的Python第二次打卡
  7. CF赛后总结3:2021-07-22晚 HSSC21-22 div1+2 rating+219
  8. JavaScript基础之new操作神来之笔
  9. 神来之笔,阿里最新Spring Security源码手册牵动了多少人的心,拿走不谢
  10. ElasticSearch Aggregation(三)