我已经在formData中创建了一个文件,如下所示:
var fd = new FormData();
fd.append('file', file);
如何从formData中获取内容?像文件名和文件?
这样的事情?:fd.filename()
,fd.getData()
。
还是fd.get('file')
来检索文件?
答案 0 :(得分:2)
你无法获得那样的归档数据。如果要将文件发送到servlet。试试这个
获取您的文件
var files=document.getElementById('fileID').files[0];
现在将您的文件附加到formdata并通过ajax发送;
fd.append('file',files);
注意:表单enctype应该是multipart / formdata
答案 1 :(得分:2)
在您将文件附加到我认为的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
});
节点(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)
});
});
要了解您可以对文件执行的操作,请阅读以下内容: http://nodejs.org/api/fs.html
代码取自: AngularJS: how to implement a simple file upload with multipart form?
答案 2 :(得分:2)
尝试:
var fd = new FormData();
fd.append('file', file);
然后使用:
var newfile = fd.get('file');
console.log(newfile.name); //filename
console.log(newfile.size); //filesize
或者对于数组:
for (var newfile of fd.getAll('file')){
console.log(newfile.name);
console.log(newfile.size);
}
然后您可以将文件追加到另一个FormData:
var newFormData = new FormData();
newFormData.append('file', newfile);
如果您想从FormData获取所有数据,而不仅仅是文件,请使用FormData.entries():
for (var pair of fd.entries())
{
console.log(pair[0]+ ', '+ pair[1]); //property and value pairs
}
答案 3 :(得分:0)
你无法获得这样的内容。可用的唯一方法是追加
答案 4 :(得分:0)
查看these Mozilla articles后,看起来无法从FormData对象中获取数据。您只能使用它们来构建FormData以通过AJAX请求发送。
解决这个问题的一种方法是建立一个常规字典,然后将其转换为FormData:
var myFormData = {
key1: 300,
key2: 'hello world'
};
var fd = new FormData();
for (var key in myFormData) {
console.log(key, myFormData[key]);
fd.append(key, myFormData[key]);
}
如果您想调试普通的FormData对象,您也可以发送它以便在开发人员工具的网络请求控制台中检查它:
var xhr = new XMLHttpRequest;
xhr.open('POST', '/', true);
xhr.send(fd);
以下是 Drag and Drop files into FormData 的概念验证代码,并通过POST上传到服务器。我还制作了一个JS Bin,您可以在其中进行实验,看看FormData对象中的数据是否有用。