fix:plus.io设为文件读取首选,getFileSystemManager降为兜底

This commit is contained in:
97694732@qq.com 2026-06-05 11:32:36 +08:00
parent 08172f5806
commit 54ac5f42b9

View File

@ -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 FileReaderHBuilder 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.getFileSystemManagerH5/小程序)
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(/=+$/, '')