## 配置
* 文件上傳保存路徑需要我們在配置文件中配置好,或者在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服務

* 在調用上傳文件接口后,會返回一段密鑰,我們只需要在需要上傳文件的業務接口內保存這段密鑰即可

## 文件下載
* 我們文件上傳之后有時我們需要下載文件,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