起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6688|回复: 12

[用户待确认] 关于牛刀存储文件问题

  [复制链接]

20

主题

73

帖子

179

积分

初级会员

Rank: 2

积分
179
QQ
发表于 2019-7-18 09:57:34 | 显示全部楼层 |阅读模式
最近有个新功能需求,请求一个接口。接口会返回一个pdf文件,我考虑需要将文件存储在服务器。我了解牛刀似乎是用minio来存储文件的,数据库里面只是存储文件的一些信息。我没找到相关文件存储的资料,能提供一些指点么。在后端,java如何存储文件,到服务器呢。

20

主题

73

帖子

179

积分

初级会员

Rank: 2

积分
179
QQ
 楼主| 发表于 2019-7-18 14:59:59 | 显示全部楼层
想法是,文件依据牛刀的规则存到对应位置,数据表里面也用文件类型,按照上传组件中文件一样的格式存储文件信息。
回复 支持 反对

使用道具 举报

10

主题

897

帖子

1909

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1909
QQ
发表于 2019-7-18 17:57:08 | 显示全部楼层
本帖最后由 007slm 于 2019-7-18 17:58 编辑

1. 前端上传推荐使用附件组件上传
2. 后端上传需要解决2件事情
        a) 上传文件到对象存储
        /storage/postObject  post请求
        参数storeFileName需要唯一用来指定对象存储名字
        
        spring mvc api描述如下
        @RequestMapping(path="/postObject",method=RequestMethod.POST)
    postObject(@RequestParam("file") MultipartFile file,@RequestParam("storeFileName") String storeFileName)
        
        b) 数据库字段中记录对oss记录的引用,格式为json数组
        
        [{
                "storeFileName":"刚才上传指定的storeFileName",
                "realFileName":"文件的原始文件名字"
        },{
                多个文件依次增加
        }]
        
3. 下载或者查看
        
        需要首选获取一个打开对应文件的url
        /storage/presignedGetObject
        方法签名如下
        @RequestMapping(path="/presignedGetObject")
        public String presignedGetObject(@RequestParam String objectName, @RequestParam(defaultValue="604800",required=false) Integer expires)
        获得url后赋值给image 或者pdfviewer等即可
        
        注意:安全模式下每次获得的url都不相同,即便url泄露,在expires时间后url也不可用,
        如果不需要安全模式。规则如下
        storeFileName如果以anoy_开头表示本文件为非安全资源,上传后查看的url固定的.只要按照一定规则拼出url即可使用.
        非安全模式下牛刀上每个应用产生url的规则并不完全一致,所以每个应用可以先调用本api获取一次,路径的最后部分即为stroeFileName,替换为其他文件storeFileName即可使用。
        例如非安全文件的查看url形如 https://testminio-ide.xcaas.net/这部分即为不变部分,开发测试生产部署都一样/storeFileName
        
        
        
        
        
        
qq上找我时候,不要问我在不,直接发问题,我看到后会去论坛回复你的帖子。
回复 支持 反对

使用道具 举报

20

主题

73

帖子

179

积分

初级会员

Rank: 2

积分
179
QQ
 楼主| 发表于 2019-7-19 12:16:04 | 显示全部楼层
第2条,需要说的细节一点,首先我要取得存储的位置,"/storage/postObject"这个是系统数据库文件的默认存储位置吗?
据我对wex5的了解,首先存储目录下,主键是文件对应的存储文件夹,然后用uuid生成realFileName,存储文件,数据库存储您所说这个json数组。所以您回复的内容我明白了,但是需要明确下文件具体存储路径怎么写,或者怎么获取?
回复 支持 反对

使用道具 举报

20

主题

73

帖子

179

积分

初级会员

Rank: 2

积分
179
QQ
 楼主| 发表于 2019-7-22 11:23:28 | 显示全部楼层
by198787 发表于 2019-7-19 12:16
第2条,需要说的细节一点,首先我要取得存储的位置,"/storage/postObject"这个是系统数据库文件的默认存储 ...

顶下帖子,存储路径是怎么获取的呢?
回复 支持 反对

使用道具 举报

20

主题

73

帖子

179

积分

初级会员

Rank: 2

积分
179
QQ
 楼主| 发表于 2019-7-24 10:38:29 | 显示全部楼层
追问还没回复?
回复 支持 反对

使用道具 举报

20

主题

73

帖子

179

积分

初级会员

Rank: 2

积分
179
QQ
 楼主| 发表于 2019-7-25 11:28:34 | 显示全部楼层
顶下不要沉
回复 支持 反对

使用道具 举报

20

主题

73

帖子

179

积分

初级会员

Rank: 2

积分
179
QQ
 楼主| 发表于 2019-7-25 11:29:28 | 显示全部楼层
007slm 发表于 2019-7-18 17:57
1. 前端上传推荐使用附件组件上传
2. 后端上传需要解决2件事情
        a) 上传文件到对象存储


第2条,需要说的细节一点,首先我要取得存储的位置,"/storage/postObject"这个是系统数据库文件的默认存储位置吗?
据我对wex5的了解,首先存储目录下,主键是文件对应的存储文件夹,然后用uuid生成realFileName,存储文件,数据库存储您所说这个json数组。所以您回复的内容我明白了,但是需要明确下文件具体存储路径怎么写,或者怎么获取?
回复 支持 反对

使用道具 举报

10

主题

897

帖子

1909

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1909
QQ
发表于 2019-7-30 18:08:59 | 显示全部楼层
文件是存储在oss对象存储里面的,需要上传下载都是通过http请求获得的,没有具体的物理位置,上传就是调用postObject这个url 下载就是调用/storage/presignedGetObject这个http的restful api  获取url然后用来下载,全部都是http的api。
qq上找我时候,不要问我在不,直接发问题,我看到后会去论坛回复你的帖子。
回复 支持 反对

使用道具 举报

20

主题

73

帖子

179

积分

初级会员

Rank: 2

积分
179
QQ
 楼主| 发表于 2019-7-30 19:08:48 | 显示全部楼层
本帖最后由 by198787 于 2019-7-30 19:19 编辑

那回到我的需求,我是服务端的接口请求的数据,我咋存储。一个问题问了12天都没解决
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-4-19 15:06 , Processed in 0.062327 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表