Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么要向服务器发送一个文件_Javascript_Reactjs_Typescript - Fatal编程技术网

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{ 此.props.importFile([res]); }) .catch((e)=>console.error(e)); }
您的服务器不可能只在
表单数据中拾取单个文件

请改为尝试
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]);