Javascript 为什么要向服务器发送一个文件
我编写了一个函数“导入文件”,它必须向服务器发送几个文件。只有一个文件到达服务器 输入:Javascript 为什么要向服务器发送一个文件,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我编写了一个函数“导入文件”,它必须向服务器发送几个文件。只有一个文件到达服务器 输入: <input type="files" id="files" name="files" multiple onChange={ (e) => this.importFile(e.target.files) } /> this.importFile(e.target.files)} /> 功能: importFile(file: File) { con
<input
type="files"
id="files"
name="files"
multiple
onChange={ (e) => this.importFile(e.target.files) }
/>
this.importFile(e.target.files)}
/>
功能:
importFile(file: File) {
const fd = new FormData();
let filesArr = [];
for (let key in file) {
if(file[key] instanceof File) {
filesArr.push(file[key]);
}
}
for (let i = 0; i < filesArr.length; i++) {
fd.append('file', filesArr[i]);
}
post('/file/attachment', fd)
.then((res) => {
this.props.importFile([res]);
})
.catch((e) => console.error(e));
}
导入文件(文件:file){
const fd=new FormData();
让filesArr=[];
for(让输入文件){
if(文件[键]实例文件){
filesArr.push(文件[key]);
}
}
for(设i=0;i您的服务器不可能只在
表单数据中拾取单个文件
请改为尝试fd.append('file[],filesArr[i])
当在键名前面使用[]
时,可以按照示例3中的说明追加多个值。fd.append('file'
您对每个追加的文件使用相同的参数名,它们必须是唯一的。否则,只需使用最后一个setfd.append('file[]',filesArr i]);尝试此操作实际上,您并没有覆盖它们,无论您使用的是什么服务器端框架,都只会给您一个条目。链接的MDN表示“与常规表单数据一样,您可以使用相同的名称附加多个值。”如果您在服务器端web框架中使用不同的方法,您可能能够获取所有条目(例如,接受File[]
而不是File
或调用getlist('files')
而不是get('files')
)@SeanVieira感谢您指出这一点,我将相应地更新回答语言
fd.append(`file${i}`, filesArr[i]);