Skip to content

Commit 0cbe363

Browse files
author
pedro
committed
feat:添加文件上传文档
1 parent c5db47b commit 0cbe363

1 file changed

Lines changed: 133 additions & 0 deletions

File tree

  • src/main/java/io/github/talelin/merak/extensions/file
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
---
2+
title: 文件上传
3+
---
4+
5+
# 文件上传
6+
7+
lin-cms 默认集成了文件上传功能,并可自由切换存储位置,前端也有相应的组件匹配使用。
8+
9+
## 使用
10+
11+
lin-cms 默认对外暴露了`cms/file/`作为文件上传接口,通过该接口可以直接使用 HTTP
12+
post 方法上传文件。
13+
14+
文件默认会上传到本地,当前工作目录下的 assets 目录。
15+
16+
## 实践
17+
18+
文件上传是开箱即用的,使用 postman 测试一下文件上传:
19+
20+
<img-wrapper>
21+
<img src="http://imglf4.nosdn0.126.net/img/Qk5LWkJVWkF3NmlvOHFlZzFHSk95OGhiL0lSSFo3OFNPSGc1WEFnc0JRVERUb2JSU0cvSUlnPT0.png?imageView&thumbnail=2090y1120&type=png&quality=96&stripmeta=0">
22+
</img-wrapper>
23+
24+
上传成功后,我们会得到如下的结果:
25+
26+
```
27+
[
28+
{
29+
key: 'one',
30+
id: 13,
31+
url:
32+
'http://localhost:5000/assets/2019/05/19/3428c02f-dfb5-47a0-82cf-2d6c05285473.png'
33+
},
34+
{
35+
key: 'two',
36+
id: 14,
37+
url:
38+
'http://localhost:5000/assets/2019/05/19/bfcff6f4-8dd7-4dd8-af9d-660781d0e076.jpg'
39+
}
40+
];
41+
```
42+
43+
由于上传了两个文件,因此我们得到了两个元素的数组,它们的结构如下:
44+
45+
| name | 说明 | 类型 |
46+
| ---- | :-------------------: | :----: |
47+
| key | 文件上传的 key | string |
48+
| id | 文件存储到数据库的 id | string |
49+
| url | 可访问的 url | string |
50+
51+
:::tip
52+
53+
系统会自动帮助我们上传的文件做 md5,因此你大可不必担心文件重复上传,如果你上传了
54+
重复的文件,服务器会返回已传文件的数据。
55+
56+
:::
57+
58+
## 配置
59+
60+
### 本地配置
61+
62+
通过配置文件`src/main/java/io/github/talelin/merak/extensions/file/config.properties`
63+
可以改变文件上传的行为,配置项如下:
64+
65+
```properties
66+
# upload
67+
# 只能从max-file-size设置总体文件的大小
68+
# 上传文件总大小
69+
spring.servlet.multipart.max-file-size=20MB
70+
# 每个文件的大小
71+
lin.cms.file.single-limit=2MB
72+
# 上传文件总数量
73+
lin.cms.file.nums=10
74+
# 禁止某些类型文件上传,文件格式以,隔开
75+
lin.cms.file.exclude=
76+
# 允许某些类型文件上传,文件格式以,隔开
77+
lin.cms.file.include=.jpg,.png,.jpeg
78+
# 文件上传后,访问域名配置
79+
lin.cms.file.domain=http://localhost:5000/
80+
# 文件存储位置,默认在工作目录下的assets目录
81+
lin.cms.file.store-dir=assets/
82+
# 具体实现
83+
lin.cms.file.uploader=local
84+
```
85+
86+
在每个配置的后面,我们均以注释的方式解释了每项的作用。
87+
88+
当然还需要着重解释一下`exclude``include`这两项配置,默认情况下,这两者只会有一
89+
项生效;若这二者中有一项为空,则另一项不为空的配置会生效;如果两项皆为空的话,会
90+
通过所有文件类型;如果二者都不为空,则`include`为有效配置,而`exclude`会失效;总
91+
而言之,系统只会支持使用一项,二者都为为空的情况下,则通过所有文件类型。
92+
93+
### 远程配置
94+
95+
将文件上传到本地显然不是一个很好的选择,lin-cms 额外提供了上传到云的支持,只需更改几个配置
96+
即可更换文件上传的存储位置。
97+
98+
目前,我们仅支持七牛云一种,后续会提供更多的选择。
99+
100+
:::tip
101+
102+
请确保你已经拥有七牛云的相关服务账号和配置信息。
103+
104+
:::
105+
106+
修改七牛相关配置,如下:
107+
108+
```properties
109+
# 七牛云域名
110+
lin.cms.file.domain={domain}
111+
# 七牛
112+
lin.cms.file.qiniuyun.access-key={******&}
113+
lin.cms.file.qiniuyun.secret-key={&******}
114+
lin.cms.file.qiniuyun.bucket={bucket}
115+
# 具体实现
116+
lin.cms.file.uploader=qiniuyun
117+
```
118+
119+
这里,我们增加了三个配置,分别是 access-key,secret-key 和 bucket,这三个配置
120+
你必须从你的七牛云账号获得,然后将其准确的填写入配置。
121+
122+
另外,我们还需要修改两个配置,一个是文件服务器域名(七牛云配置中的域名),另一个是
123+
uploader 的实现,我们将其修改为了 qiniuyun。
124+
125+
配置修改完毕后,文件上传就可以无缝切换到云上了。
126+
127+
:::warning
128+
129+
一定要填写正确的 access-key,secret-key,bucket 以及 domain。
130+
131+
:::
132+
133+
<RightMenu />

0 commit comments

Comments
 (0)