如何从formData获取内容?

use*_*894 5 html javascript form-data

我已经在formData中创建了一个文件,如下所示:

    var fd = new FormData();
    fd.append('file', file);    
Run Code Online (Sandbox Code Playgroud)

如何从formData中获取内容?像文件名和文件?这样的事情?:fd.filename(), fd.getData(). 或者fd.get('file')检索文件?

mr2*_*r2k 6

在您将文件附加到我相信的 formData 对象后,无法检索这些文件。

您必须将 formData-object 发送到某个地方,然后从 req-object 或类似的东西中获取文件。

就我而言(angularJS + nodeJS),我从 SO 上的答案(下面的链接)中对此进行了测试:

角度:

var fd = new FormData();
fd.append('file', file);
$http({
  method:"POST",
  url:"uploadFile",
  data: fd,
  withCredentials: true,
  headers: {'Content-Type': undefined },
  transformRequest: angular.identity
});
Run Code Online (Sandbox Code Playgroud)

节点(expressJS):

app.post('/uploadFile', function(req,res){
  fs.readFile(req.files.file.path, function(err, data){
    // Do something with the data (which holds the file information)
  });
});
Run Code Online (Sandbox Code Playgroud)

要查看您可以使用该文件做什么,请阅读以下内容:http : //nodejs.org/api/fs.html

代码摘自: AngularJS:如何用多部分形式实现一个简单的文件上传?


Cai*_*ean 5

尝试:

 var fd = new FormData();
 fd.append('file', file); 
Run Code Online (Sandbox Code Playgroud)

然后使用这个:

   var newfile = fd.get('file');
      console.log(newfile.name);       //filename
      console.log(newfile.size);       //filesize
Run Code Online (Sandbox Code Playgroud)

或者对于数组来说:

 for (var newfile of fd.getAll('file')){
     console.log(newfile.name);
     console.log(newfile.size);
}  
Run Code Online (Sandbox Code Playgroud)

然后您可以将文件附加到另一个 FormData:

var newFormData = new FormData();
    newFormData.append('file', newfile);
Run Code Online (Sandbox Code Playgroud)

如果您想从 FormData 获取所有数据,而不仅仅是文件,请使用 FormData.entries() :

for (var pair of fd.entries())
    {
     console.log(pair[0]+ ', '+ pair[1]);   //property and value pairs
    }
Run Code Online (Sandbox Code Playgroud)