Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
FinClip
ligase
提交
0ca2931b
ligase
项目概览
FinClip
/
ligase
通知
37
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
ligase
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0ca2931b
编写于
5月 31, 2017
作者:
R
Robert Swain
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
mediaapi/fileutils: Change path schema to put file in subdir of hash
上级
8c6f30ea
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
10 addition
and
25 deletion
+10
-25
src/github.com/matrix-org/dendrite/mediaapi/fileutils/fileutils.go
...b.com/matrix-org/dendrite/mediaapi/fileutils/fileutils.go
+10
-25
未找到文件。
src/github.com/matrix-org/dendrite/mediaapi/fileutils/fileutils.go
浏览文件 @
0ca2931b
...
...
@@ -31,37 +31,22 @@ import (
)
// GetPathFromBase64Hash evaluates the path to a media file from its Base64Hash
// If the Base64Hash is long enough, we split it into pieces, creating up to 2 subdirectories
// for more manageable browsing and use the remainder as the file name.
// For example, if Base64Hash is 'qwerty', the path will be 'q/w/erty'.
// 3 subdirectories are created for more manageable browsing and use the remainder as the file name.
// For example, if Base64Hash is 'qwerty', the path will be 'q/w/erty/file'.
func
GetPathFromBase64Hash
(
base64Hash
types
.
Base64Hash
,
absBasePath
types
.
Path
)
(
string
,
error
)
{
var
subPath
,
fileName
string
hashLen
:=
len
(
base64Hash
)
switch
{
case
hashLen
<
1
:
return
""
,
fmt
.
Errorf
(
"Invalid filePath (Base64Hash too short): %q"
,
base64Hash
)
case
hashLen
>
255
:
if
len
(
base64Hash
)
<
3
{
return
""
,
fmt
.
Errorf
(
"Invalid filePath (Base64Hash too short - min 3 characters): %q"
,
base64Hash
)
}
if
len
(
base64Hash
)
>
255
{
return
""
,
fmt
.
Errorf
(
"Invalid filePath (Base64Hash too long - max 255 characters): %q"
,
base64Hash
)
case
hashLen
<
2
:
subPath
=
""
fileName
=
string
(
base64Hash
)
case
hashLen
<
3
:
subPath
=
string
(
base64Hash
[
0
:
1
])
fileName
=
string
(
base64Hash
[
1
:
])
default
:
subPath
=
path
.
Join
(
string
(
base64Hash
[
0
:
1
]),
string
(
base64Hash
[
1
:
2
]),
)
fileName
=
string
(
base64Hash
[
2
:
])
}
filePath
,
err
:=
filepath
.
Abs
(
path
.
Join
(
string
(
absBasePath
),
subPath
,
fileName
,
string
(
base64Hash
[
0
:
1
]),
string
(
base64Hash
[
1
:
2
]),
string
(
base64Hash
[
2
:
]),
"file"
,
))
if
err
!=
nil
{
return
""
,
fmt
.
Errorf
(
"Unable to construct filePath: %q"
,
err
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录