From 839f2fe7d480b4d2ae8034196af89d50ad4aefa7 Mon Sep 17 00:00:00 2001 From: qiang Date: Thu, 2 Apr 2020 22:23:32 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20H5=20=E7=AB=AF=20uni.uploadFile=20?= =?UTF-8?q?=E6=94=AF=E6=8C=81=20files=20=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../h5/service/api/network/upload-file.js | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/platforms/h5/service/api/network/upload-file.js b/src/platforms/h5/service/api/network/upload-file.js index 1e9db34e5..9e3b29e26 100644 --- a/src/platforms/h5/service/api/network/upload-file.js +++ b/src/platforms/h5/service/api/network/upload-file.js @@ -47,6 +47,7 @@ export function uploadFile ({ url, filePath, name, + files, header, formData }, callbackId) { @@ -55,15 +56,23 @@ export function uploadFile ({ invokeCallbackHandler: invoke } = UniServiceJSBridge var uploadTask = new UploadTask(null, callbackId) - - function upload (file) { + if (!Array.isArray(files) || !files.length) { + files = [{ + name, + uri: filePath + }] + } + function upload (realFiles) { var xhr = new XMLHttpRequest() var form = new FormData() var timer Object.keys(formData).forEach(key => { form.append(key, formData[key]) }) - form.append(name, file, file.name || `file-${Date.now()}`) + Object.values(files).forEach(({ name }, index) => { + const file = realFiles[index] + form.append(name || 'file', file, file.name || `file-${Date.now()}`) + }) xhr.open('POST', url) Object.keys(header).forEach(key => { xhr.setRequestHeader(key, header[key]) @@ -118,13 +127,16 @@ export function uploadFile ({ } } - urlToFile(filePath).then(upload).catch(() => { - setTimeout(() => { - invoke(callbackId, { - errMsg: 'uploadFile:fail file error' - }) - }, 0) - }) + Promise + .all(files.map(({ name, uri }) => urlToFile(uri))) + .then(upload) + .catch(() => { + setTimeout(() => { + invoke(callbackId, { + errMsg: 'uploadFile:fail file error' + }) + }, 0) + }) return uploadTask } -- GitLab