fix:plus.io设为文件读取首选,getFileSystemManager降为兜底
This commit is contained in:
parent
08172f5806
commit
54ac5f42b9
@ -82,19 +82,44 @@ function buildAuthHeader(objectKey, date, contentType, contentSha256) {
|
|||||||
|
|
||||||
function readFileAsBase64(filePath) {
|
function readFileAsBase64(filePath) {
|
||||||
return new Promise(function (resolve, reject) {
|
return new Promise(function (resolve, reject) {
|
||||||
try {
|
// 方式1: plus.io FileReader(HBuilder App 环境,最可靠)
|
||||||
var fs = uni.getFileSystemManager()
|
if (typeof plus !== 'undefined' && plus.io && plus.io.FileReader) {
|
||||||
if (fs && fs.readFile) {
|
plus.io.resolveLocalFileSystemURL(filePath, function (entry) {
|
||||||
fs.readFile({ filePath: filePath, encoding: 'base64', success: function (res) { resolve(res.data) }, fail: function () { reject(new Error('readFile失败')) } })
|
entry.file(function (file) {
|
||||||
} else {
|
var reader = new plus.io.FileReader()
|
||||||
reject(new Error('不支持文件读取'))
|
reader.onloadend = function (e) {
|
||||||
}
|
var data = e.target.result
|
||||||
} catch (e) {
|
if (data.indexOf(',') > -1) data = data.split(',')[1]
|
||||||
reject(new Error('读取文件异常: ' + e.message))
|
resolve(data)
|
||||||
|
}
|
||||||
|
reader.onerror = function () { reject(new Error('FileReader失败')) }
|
||||||
|
reader.readAsDataURL(file)
|
||||||
|
}, function () { reject(new Error('获取文件对象失败')) })
|
||||||
|
}, function (err) {
|
||||||
|
console.warn('resolveLocalFileSystemURL失败:', JSON.stringify(err))
|
||||||
|
// 回退到 getFileSystemManager
|
||||||
|
tryFSManager(filePath, resolve, reject)
|
||||||
|
})
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
// 方式2: uni.getFileSystemManager(H5/小程序)
|
||||||
|
tryFSManager(filePath, resolve, reject)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function tryFSManager(filePath, resolve, reject) {
|
||||||
|
try {
|
||||||
|
var fs = uni.getFileSystemManager()
|
||||||
|
if (fs && fs.readFile) {
|
||||||
|
fs.readFile({ filePath: filePath, encoding: 'base64', success: function (res) { resolve(res.data) }, fail: function (e) { reject(new Error('readFile失败: ' + JSON.stringify(e))) } })
|
||||||
|
} else {
|
||||||
|
reject(new Error('不支持文件读取'))
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
reject(new Error('不支持文件读取: ' + e.message))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function base64ToBytes(base64) {
|
function base64ToBytes(base64) {
|
||||||
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
|
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
|
||||||
base64 = base64.replace(/=+$/, '')
|
base64 = base64.replace(/=+$/, '')
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user