提交 bf9b3247 编写于 作者: Q qiang

fix: 修复 iOS9 系统 uni.uploadFile 传入 base64 报错的问题

上级 fd8e71e6
......@@ -44,8 +44,35 @@ export function base64ToFile (base64) {
while (n--) {
array[n] = str.charCodeAt(n)
}
var filename = `${Date.now()}.${type.split('/')[1]}`
return new File([array], filename, { type: type })
return blobToFile(array, type)
}
/**
* 简易获取扩展名
* @param {string} type
* @return {string}
*/
function getExtname (type) {
const extname = type.split('/')[1]
return extname ? `.${extname}` : ''
}
/**
* blob转File
* @param {Blob} blob
* @param {string} type
* @return {File}
*/
export function blobToFile (blob, type) {
if (!(blob instanceof File)) {
type = type || blob.type || ''
const filename = `${Date.now()}${getExtname(type)}`
try {
blob = new File([blob], filename, { type })
} catch (error) {
blob = blob instanceof Blob ? blob : new Blob([blob], { type })
blob.name = blob.name || filename
}
}
return blob
}
/**
* 从本地file或者blob对象创建url
......
import { urlToFile } from 'uni-platform/helpers/file'
import {
urlToFile,
blobToFile
} from 'uni-platform/helpers/file'
/**
* 上传任务
*/
......@@ -133,7 +136,7 @@ export function uploadFile ({
}
Promise
.all(files.map(({ file, uri }) => file instanceof Blob ? Promise.resolve(file) : urlToFile(uri)))
.all(files.map(({ file, uri }) => file instanceof Blob ? Promise.resolve(blobToFile(file)) : urlToFile(uri)))
.then(upload)
.catch(() => {
setTimeout(() => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册