【发布时间】:2021-12-03 05:26:29
【问题描述】:
我正在尝试使用 FormData 作为包含文件和其他必要属性的对象数组上传多个文件,但我没有得到预期的结果。
import api from './api';
const formData = new FormData();
// File input with multiple attribute
const files = this.$refs.photo.files;
if (files.length > 0) {
for (let i = 0; i < files.length; i++) {
formData.append('files', { file: files[i], someOtherProp: 'value' });
}
}
api.createArticle(formData);
// api/index.js
import axios from 'axios';
import config from '@/config';
const api = axios.create({
baseURL: config.api,
timeout: config.apiTimeout,
});
createArticle(payload) {
return api.post('/articles', payload, {
headers: {
'Content-Type': 'multipart/form-data',
}
});
}
export {
createArticle
};
当我发送请求时,这就是我得到的
【问题讨论】:
-
你不应该附加对象,只是字符串或文件。分别附加文件和附加信息。见这里:developer.mozilla.org/en-US/docs/Web/API/FormData/append
-
@ADyson 服务器将文件视为数组,当我使用
files语法发送没有其他道具的文件时。 -formData.append('files', files[i]);
标签: javascript file-upload axios form-data