Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
anyefeiyu
uni-app
提交
8151d2f6
U
uni-app
项目概览
anyefeiyu
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8151d2f6
编写于
9月 17, 2020
作者:
Q
qiang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix: 优化 App 端文件接口错误回调
上级
75546071
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
104 addition
and
120 deletion
+104
-120
src/core/helpers/protocol/file/file.js
src/core/helpers/protocol/file/file.js
+50
-0
src/platforms/app-plus/service/api/file/file.js
src/platforms/app-plus/service/api/file/file.js
+38
-108
src/platforms/app-plus/service/api/media/choose-video.js
src/platforms/app-plus/service/api/media/choose-video.js
+5
-6
src/platforms/app-plus/service/api/util.js
src/platforms/app-plus/service/api/util.js
+11
-6
未找到文件。
src/core/helpers/protocol/file/file.js
0 → 100644
浏览文件 @
8151d2f6
import
getRealPath
from
'
uni-platform/helpers/get-real-path
'
export
const
saveFile
=
{
tempFilePath
:
{
type
:
String
,
required
:
true
,
validator
(
value
,
params
)
{
params
.
tempFilePath
=
getRealPath
(
value
)
}
}
}
const
TYPES
=
[
'
md5
'
,
'
sha1
'
]
export
const
getFileInfo
=
{
filePath
:
{
type
:
String
,
required
:
true
,
validator
(
value
,
params
)
{
params
.
filePath
=
getRealPath
(
value
)
}
},
digestAlgorithm
:
{
type
:
String
,
validator
(
value
,
params
)
{
params
.
digestAlgorithm
=
TYPES
.
includes
(
value
)
?
value
:
TYPES
[
0
]
},
default
:
TYPES
[
0
]
}
}
export
const
getSavedFileInfo
=
{
filePath
:
{
type
:
String
,
required
:
true
,
validator
(
value
,
params
)
{
params
.
filePath
=
getRealPath
(
value
)
}
}
}
export
const
removeSavedFile
=
{
filePath
:
{
type
:
String
,
required
:
true
,
validator
(
value
,
params
)
{
params
.
filePath
=
getRealPath
(
value
)
}
}
}
src/platforms/app-plus/service/api/file/file.js
浏览文件 @
8151d2f6
import
{
getRealPath
warpPlusMethod
,
warpPlusErrorCallback
}
from
'
../util
'
import
{
...
...
@@ -8,67 +9,44 @@ import {
const
SAVED_DIR
=
'
uniapp_save
'
const
SAVE_PATH
=
`_doc/
${
SAVED_DIR
}
`
const
REGEX_FILENAME
=
/^.*
[/]
/
function
getSavedFileDir
(
success
,
fail
)
{
fail
=
fail
||
function
()
{}
fail
=
fail
||
function
()
{
}
plus
.
io
.
requestFileSystem
(
plus
.
io
.
PRIVATE_DOC
,
fs
=>
{
// 请求_doc fs
fs
.
root
.
getDirectory
(
SAVED_DIR
,
{
// 获取文件保存目录对象
create
:
true
},
dir
=>
{
success
(
dir
)
},
err
=>
{
fail
(
'
目录[
'
+
SAVED_DIR
+
'
]创建失败
'
+
err
.
message
)
})
},
err
=>
{
fail
(
'
目录[_doc]读取失败
'
+
err
.
message
)
})
},
success
,
fail
)
},
fail
)
}
function
getFileName
(
path
)
{
const
array
=
path
.
split
(
'
/
'
)
return
array
[
array
.
length
-
1
]
}
export
function
saveFile
({
tempFilePath
}
=
{},
callbackId
)
{
let
fileName
=
tempFilePath
.
replace
(
REGEX_FILENAME
,
''
)
if
(
fileName
)
{
let
extName
=
''
if
(
~
fileName
.
indexOf
(
'
.
'
))
{
extName
=
'
.
'
+
fileName
.
split
(
'
.
'
).
pop
()
}
const
errorCallback
=
warpPlusErrorCallback
(
callbackId
,
'
saveFile
'
)
let
fileName
=
getFileName
(
tempFilePath
)
fileName
=
`
${
Date
.
now
()}
_
${
fileName
}
`
fileName
=
(
+
new
Date
())
+
''
+
extName
plus
.
io
.
resolveLocalFileSystemURL
(
getRealPath
(
tempFilePath
),
entry
=>
{
// 读取临时文件 FileEntry
getSavedFileDir
(
dir
=>
{
entry
.
copyTo
(
dir
,
fileName
,
()
=>
{
// 复制临时文件 FileEntry,为了避免把相册里的文件删除,使用 copy,微信中是要删除临时文件的
const
savedFilePath
=
SAVE_PATH
+
'
/
'
+
fileName
invoke
(
callbackId
,
{
errMsg
:
'
saveFile:ok
'
,
savedFilePath
})
},
err
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
saveFile:fail 保存文件[
'
+
tempFilePath
+
'
] copyTo 失败:
'
+
err
.
message
})
})
},
message
=>
{
plus
.
io
.
resolveLocalFileSystemURL
(
tempFilePath
,
entry
=>
{
// 读取临时文件 FileEntry
getSavedFileDir
(
dir
=>
{
entry
.
copyTo
(
dir
,
fileName
,
()
=>
{
// 复制临时文件 FileEntry,为了避免把相册里的文件删除,使用 copy,微信中是要删除临时文件的
const
savedFilePath
=
SAVE_PATH
+
'
/
'
+
fileName
invoke
(
callbackId
,
{
errMsg
:
'
saveFile:fail
'
+
message
errMsg
:
'
saveFile:ok
'
,
savedFilePath
})
})
},
err
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
saveFile:fail 文件[
'
+
tempFilePath
+
'
]读取失败
'
+
err
.
message
})
})
}
else
{
return
{
errMsg
:
'
saveFile:fail 文件名[
'
+
tempFilePath
+
'
]不存在
'
}
}
},
errorCallback
)
},
errorCallback
)
},
errorCallback
)
}
export
function
getSavedFileList
(
options
,
callbackId
)
{
const
errorCallback
=
warpPlusErrorCallback
(
callbackId
,
'
getSavedFileList
'
)
getSavedFileDir
(
entry
=>
{
var
reader
=
entry
.
createReader
()
...
...
@@ -88,11 +66,7 @@ export function getSavedFileList (options, callbackId) {
fileList
})
}
},
error
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
getSavedFileList:fail
'
+
error
.
message
})
},
false
)
},
errorCallback
,
false
)
})
}
else
{
invoke
(
callbackId
,
{
...
...
@@ -100,82 +74,38 @@ export function getSavedFileList (options, callbackId) {
fileList
})
}
},
error
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
getSavedFileList:fail
'
+
error
.
message
})
})
},
message
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
getSavedFileList:fail
'
+
message
})
})
},
errorCallback
)
},
errorCallback
)
}
export
function
getFileInfo
({
filePath
,
digestAlgorithm
=
'
md5
'
}
=
{},
callbackId
)
{
// TODO 计算文件摘要
plus
.
io
.
resolveLocalFileSystemURL
(
getRealPath
(
filePath
),
entry
=>
{
entry
.
getMetadata
(
meta
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
getFileInfo:ok
'
,
size
:
meta
.
size
,
digestAlgorithm
:
''
})
},
err
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
getFileInfo:fail 文件[
'
+
filePath
+
'
] getMetadata 失败:
'
+
err
.
message
})
})
},
err
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
getFileInfo:fail 文件[
'
+
filePath
+
'
]读取失败:
'
+
err
.
message
})
})
}
export
const
getFileInfo
=
warpPlusMethod
(
plus
.
io
,
'
getFileInfo
'
)
export
function
getSavedFileInfo
({
filePath
}
=
{},
callbackId
)
{
plus
.
io
.
resolveLocalFileSystemURL
(
getRealPath
(
filePath
),
entry
=>
{
const
errorCallback
=
warpPlusErrorCallback
(
callbackId
,
'
getSavedFileInfo
'
)
plus
.
io
.
resolveLocalFileSystemURL
(
filePath
,
entry
=>
{
entry
.
getMetadata
(
meta
=>
{
invoke
(
callbackId
,
{
createTime
:
meta
.
modificationTime
.
getTime
(),
size
:
meta
.
size
,
errMsg
:
'
getSavedFileInfo:ok
'
})
},
error
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
getSavedFileInfo:fail
'
+
error
.
message
})
},
false
)
},
()
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
getSavedFileInfo:fail file not find
'
})
})
},
errorCallback
,
false
)
},
errorCallback
)
}
export
function
removeSavedFile
({
filePath
}
=
{},
callbackId
)
{
plus
.
io
.
resolveLocalFileSystemURL
(
getRealPath
(
filePath
),
entry
=>
{
const
errorCallback
=
warpPlusErrorCallback
(
callbackId
,
'
removeSavedFile
'
)
plus
.
io
.
resolveLocalFileSystemURL
(
filePath
,
entry
=>
{
entry
.
remove
(()
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
removeSavedFile:ok
'
})
},
err
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
removeSavedFile:fail 文件[
'
+
filePath
+
'
]删除失败:
'
+
err
.
message
})
})
},
()
=>
{
invoke
(
callbackId
,
{
errMsg
:
'
removeSavedFile:fail file not find
'
})
})
},
errorCallback
)
},
errorCallback
)
}
src/platforms/app-plus/service/api/media/choose-video.js
浏览文件 @
8151d2f6
...
...
@@ -6,17 +6,16 @@ import {
invoke
}
from
'
../../bridge
'
import
{
warpPlusErrorCallback
}
from
'
../util
'
export
function
chooseVideo
({
sourceType
=
[
'
album
'
,
'
camera
'
],
maxDuration
=
60
,
camera
=
'
back
'
}
=
{},
callbackId
)
{
function
errorCallback
(
error
)
{
error
=
error
||
{}
invoke
(
callbackId
,
{
errMsg
:
`chooseVideo:fail
${
error
.
message
||
'
cancel
'
}
`
})
}
const
errorCallback
=
warpPlusErrorCallback
(
callbackId
,
'
chooseVideo
'
,
'
cancel
'
)
function
successCallback
(
tempFilePath
=
''
)
{
plus
.
io
.
getVideoInfo
({
...
...
src/platforms/app-plus/service/api/util.js
浏览文件 @
8151d2f6
...
...
@@ -179,6 +179,16 @@ export function warpPlusEvent (origin, name) {
}
}
export
function
warpPlusErrorCallback
(
callbackId
,
neme
,
errMsg
)
{
return
function
errorCallback
(
error
)
{
error
=
error
||
{}
invoke
(
callbackId
,
{
errMsg
:
`
${
neme
}
:fail
${
error
.
message
||
errMsg
||
''
}
`
,
errCode
:
error
.
code
||
0
})
}
}
export
function
warpPlusMethod
(
origin
,
name
,
before
)
{
return
function
(
options
,
callbackId
)
{
if
(
typeof
before
===
'
function
'
)
{
...
...
@@ -192,12 +202,7 @@ export function warpPlusMethod (origin, name, before) {
errMsg
:
`
${
name
}
:ok`
}))
},
fail
(
error
=
{})
{
invoke
(
callbackId
,
{
errMsg
:
`
${
name
}
:fail
${
error
.
message
||
''
}
`
,
errCode
:
error
.
code
||
0
})
}
fail
:
warpPlusErrorCallback
(
callbackId
,
name
)
}))
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录