一、该问题的重现步骤是什么?
目前想实现的效果为:一部分文件下载的时候需要登录后才可以下载
当前系统文件上传后会返回一个地址,该地址可以直接进行下载
通过看代码,在tool工程里有一个BladeController.java 类,里面封装了相关的下载方法,该下载方法是需要传入一个File类 或者是Resource类。
在MinioTemplate.java 里新增一个获取文件流的方法。
同时在resource工程的OssEndpoint里添加一个方法getInputStream,来调用,获取文件流。
然后在业务的Controller里新建一个下载的地址(需要鉴权访问这个地址),实现是通过Feign的形式调用OssEndpoint里新建的获取流的方法,然后把文件流转换成File 来调用BladeController.download方法,这样是不是有点繁琐。
如果是官方实现的话,是怎么处理呢,提供一下相关思路
2.
3.
二、你期待的结果是什么?实际看到的又是什么?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
2.8版本
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
一、如果要下载的话,可以把它做成文件流,直接访问这个url就可以下载,所以不需要调用download方法
二、针对是否需要鉴权,你可以在上传的时候传一个参数flag,如果flag为true则代表鉴权,flag为false则代表不需要鉴权
三、在minioTemplate的putObject方法就需要针对参数flag来进行判断,如果不需要鉴权,则直接返回minio的地址。如果需要鉴权,那肯定不能返回minio的url,所以这一层需要用后端api来包装
四、至于考虑到后续有些本来不需要鉴权的api也要鉴权,那么这些数据必然需要进行保存,可以在上传的时候,配置,把oss的url保存到附件表去,然后附件表多加一个字段flag,来代表他是否需要鉴权。
五、把oss保存到附件表后会获得一个id,同时在putObject返回的url也可以加上这个id,比如https://oss.bladex.cn/attach/1000101010,就可以自定义一个后端的通用api,根据id获取url和flag,然后判断是否需要鉴权,如果鉴权就获取一下AuthUtil.getUser,空则返回未授权,有数据则返回url
六、这个后端的api职责很简单,只需要实现两步骤:1、根据id查询flag来进行token鉴权,2、根据id到附件表查询url,根据url直接转换为流并返回
扫一扫访问 Blade技术社区 移动端