## 配置
* 文件上传保存路径需要我们在配置文件中配置好,或者在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持续扩展。
- 序言
- 开发环境准备
- 环境要求
- 环境安装
- 基础环境安装
- Nacos安装
- Sentinel安装
- 插件安装
- 导入工程
- 运行工程
- 工程测试
- JPower特性
- 系统启动器
- 多终端令牌认证
- 系统鉴权
- 鉴权API
- 鉴权配置
- API权限配置
- 接口放行配置
- 数据权限
- redis缓存
- 动态网关
- 聚合文档
- SaaS多租户
- 概念
- 使用
- Xss防注入
- 日志记录
- 操作日志&错误日志
- SQL打印
- feign请求日志&配置
- gateway日志
- 服务日志打印
- 导入导出
- 字典查询
- 系统文件上传下载
- 接口监控
- 代码生成器
- 配置文件共享
- Mybatis过滤器
- 配置说明
- 高级实战
- nacos动态配置
- Seata分布式事务
- 简介
- docker启动
- 微服务配置
- 微服务远程调用
- 声明式服务调用 Feign
- 熔断机制 Sentinel
- sentinel流控
- 简介
- 微服务配置
- 配置nacos对接
- APM监控&链路追踪
- 简介
- 安装
- 微服务接入
- SpringBootAdmin监控
- ELK分布式日志追踪系统
- ELK简介
- ELK一键部署
- 微服务日志对接ELK
- JPower-Chat
- 配置说明
- 生产部署
- docker部署
- docker安装
- docker-compose安装
- harbor安装
- 部署步骤
- 版本升级
- 1.0.1升级到2.0.0
- 2.0.0升级到2.0.2
- 2.0.2升级2.1.0
- 2.1.0升级到2.1.1
- 2.1.1升级到2.1.2
- 2.1.2升级到2.1.4