Skip to content

Commit d785514

Browse files
committed
fix(uploader): 修复data外部修改后提交时依然是旧值问题
1 parent 45ba047 commit d785514

File tree

6 files changed

+28
-26
lines changed

6 files changed

+28
-26
lines changed

src/packages/__VUE/uploader/doc.en-US.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -366,8 +366,8 @@ const clearUpload = () => {
366366
| name | File name | - |
367367
| url | File path | - |
368368
| type | File type | `"image/jpeg" ` |
369-
| formData | Upload the required data | `new FormData()` |
370369
| percentage | Upload percentage | `0` |
370+
| sourceFile | Upload the required file | - |
371371

372372
### Events
373373

src/packages/__VUE/uploader/doc.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -367,8 +367,8 @@ const clearUpload = () => {
367367
| name | 文件名称 | - |
368368
| url | 文件路径 | - |
369369
| type | 文件类型 | `"image/jpeg"` |
370-
| formData | 上传所需的 data | `new FormData() ` |
371370
| percentage | 上传百分比 | `0` |
371+
| sourceFile | 上传所需的 file | - |
372372

373373
### Events
374374

src/packages/__VUE/uploader/doc.taro.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -282,8 +282,8 @@ const clearUpload = () => {
282282
| uid | 文件的唯一标识 | `new Date().getTime().toString()` |
283283
| name | 文件名称 | - |
284284
| url | 文件路径 | - |
285-
| formData | 上传所需的 data | `{}` |
286285
| percentage | 上传百分比 | `0` |
286+
| sourceFile | 上传所需的 file(仅WEB) | - |
287287

288288
### Events
289289

src/packages/__VUE/uploader/index.taro.vue

+15-9
Original file line numberDiff line numberDiff line change
@@ -281,10 +281,21 @@ export default create({
281281
282282
const executeUpload = (fileItem: FileItem, index: number) => {
283283
const uploadOption = new UploadOptions()
284+
285+
if (Taro.getEnv() == 'WEB') {
286+
const formData = new FormData()
287+
for (const [key, value] of Object.entries(props.data)) {
288+
formData.append(key, value)
289+
}
290+
formData.append(props.name, fileItem.sourceFile!)
291+
uploadOption.formData = formData
292+
} else {
293+
uploadOption.formData = props.data as FormData
294+
}
295+
284296
uploadOption.name = props.name
285297
uploadOption.url = props.url
286298
uploadOption.fileType = fileItem.type
287-
uploadOption.formData = fileItem.formData
288299
uploadOption.timeout = (props.timeout as number) * 1
289300
uploadOption.method = props.method
290301
uploadOption.xhrState = props.xhrState as number
@@ -381,18 +392,13 @@ export default create({
381392
fileItem.status = 'ready'
382393
fileItem.message = translate('waitingUpload')
383394
fileItem.type = fileType
395+
384396
if (Taro.getEnv() == 'WEB') {
385-
const formData = new FormData()
386-
for (const [key, value] of Object.entries(props.data)) {
387-
formData.append(key, value)
388-
}
389-
formData.append(props.name, file.originalFileObj as Blob)
397+
fileItem.sourceFile = file.originalFileObj
390398
fileItem.name = file.originalFileObj?.name
391399
fileItem.type = file.originalFileObj?.type
392-
fileItem.formData = formData
393-
} else {
394-
fileItem.formData = props.data
395400
}
401+
396402
if (props.isPreview) {
397403
fileItem.url = fileType == 'video' ? file.thumbTempFilePath : filepath
398404
}

src/packages/__VUE/uploader/index.vue

+9-13
Original file line numberDiff line numberDiff line change
@@ -185,20 +185,22 @@ export default create({
185185
}
186186
187187
const executeUpload = (fileItem: FileItem, index: number) => {
188+
const formData = new FormData()
189+
for (const [key, value] of Object.entries(props.data)) {
190+
formData.append(key, value)
191+
}
192+
formData.append(props.name, fileItem.sourceFile!)
193+
188194
const uploadOption = new UploadOptions()
189195
uploadOption.url = props.url
190-
uploadOption.formData = fileItem.formData
196+
uploadOption.formData = formData
191197
uploadOption.timeout = (props.timeout as number) * 1
192198
uploadOption.method = props.method
193199
uploadOption.xhrState = props.xhrState as number
194200
uploadOption.headers = props.headers
195201
uploadOption.withCredentials = props.withCredentials
196202
uploadOption.beforeXhrUpload = props.beforeXhrUpload
197-
try {
198-
uploadOption.sourceFile = fileItem.formData.get(props.name)
199-
} catch (error) {
200-
console.warn('[NutUI] <Uploader> formData.get(name)', error)
201-
}
203+
uploadOption.sourceFile = fileItem.sourceFile
202204
uploadOption.onStart = (option: UploadOptions) => {
203205
fileItem.status = 'ready'
204206
fileItem.message = translate('readyUpload')
@@ -260,17 +262,11 @@ export default create({
260262
261263
const readFile = (files: File[]) => {
262264
files.forEach((file: File, index: number) => {
263-
const formData = new FormData()
264-
for (const [key, value] of Object.entries(props.data)) {
265-
formData.append(key, value)
266-
}
267-
formData.append(props.name, file)
268-
269265
const fileItem = reactive(new FileItem())
270266
fileItem.name = file.name
271267
fileItem.status = 'ready'
272268
fileItem.type = file.type
273-
fileItem.formData = formData
269+
fileItem.sourceFile = file
274270
fileItem.message = translate('waitingUpload')
275271
executeUpload(fileItem, index)
276272

src/packages/__VUE/uploader/type.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ export class FileItem {
1111
type?: string
1212
path?: string
1313
percentage: string | number = 0
14-
formData: any = {}
14+
sourceFile?: File
1515
}

0 commit comments

Comments
 (0)