多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 配置 * 文件上传保存路径需要我们在配置文件中配置好,或者在nacos配置,具体配置如下 ~~~ jpower fileParentPath: 上传文件保存的绝对路径 ~~~ ## 文件上传 * 我们平常开发时经常会遇到上传文件的需求,当项目为多人时,会有很多个上传接口,考虑这种情况JPower统一提供来上传文件的接口,前端直接调用即可。 * 接口代码如下 ~~~ @ApiOperation("上传文件") @PostMapping(value = "/upload",produces="application/json") public ResponseData upload(@ApiParam("文件") @RequestParam(required = false) MultipartFile file, @ApiParam(value = "存储类型 字典FILE_STORAGE_TYPE",defaultValue = "SERVER") @RequestParam(required = false,defaultValue = "SERVER") String storageType){ JpowerAssert.notTrue(file == null || file.isEmpty(),JpowerError.Arg,"文件不可为空"); try { TbCoreFile coreFile = operateBuilder.getBuilder(storageType).upload(file); if (Fc.notNull(coreFile)){ return ReturnJsonUtil.ok("上传成功", coreFile.getMark()); }else { return ReturnJsonUtil.fail("文件保存失败"); } } catch (JpowerException je){ throw je; } catch (Exception e){ e.printStackTrace(); logger.error("文件上传失败,e={}",e.getMessage()); return ReturnJsonUtil.printJson(ConstantsReturn.RECODE_ERROR,"文件上传失败", false); } } ~~~ * JPower单独抛出了一个项目jpower-file,专门来做系统文件的管理,我们启动gateway,再启动jpower-file服务 ![](https://img.kancloud.cn/12/bf/12bfe0c6d0fd88635776227540d9a6e5_642x258.png) * 在调用上传文件接口后,会返回一段密钥,我们只需要在需要上传文件的业务接口内保存这段密钥即可 ![](https://img.kancloud.cn/d2/68/d268f3bcb215c5400c366b7ec70e5ad9_2764x1110.png) ## 文件下载 * 我们文件上传之后有时我们需要下载文件,JPower也统一提供了下载接口,具体代码如下 ~~~ @ApiOperation("下载文件") @GetMapping(value = "/download",produces="application/json") public void download(@ApiParam(value = "文件标识",required = true) @RequestParam String base){ JpowerAssert.notEmpty(base,JpowerError.Arg,"文件标识不可为空"); String id = DESUtil.decrypt(base,ConstantsUtils.FILE_DES_KEY); JpowerAssert.notEmpty(id,JpowerError.Arg,"文件标识不合法"); TbCoreFile coreFile = coreFileService.getById(id); try { operateBuilder.getBuilder(coreFile.getStorageType()).download(coreFile); } catch (IOException e) { e.printStackTrace(); logger.error("文件下载失败,e={}",e.getMessage()); throw new BusinessException(coreFile.getName()+"文件下载失败"); } } ~~~ * 下载的文件前提是必须由上传接口上传的文件,如果不是则会提示找不到文件 * 我们使用上传文件返回的密钥去请求下载接口就会得到原始文件 ## 结束语 * 当前JPower提供了服务器存储、数据库存储、FastDFS存储文件的方式,后续版本会提供OSS存储等。 * 文件上传下载管理等操作细分还由很多功能,比如断点续传等,JPower后续版本会对jpower-file持续扩展。