1 2 var form = document .getElementById('form' ); var formData = new FormData(form);
2. 提交表单对象
注意:
1.Formdata 对象不能用于 get 请求,因为对象需要被传递到 send 方法中,而 get 请求方式的请求参数只能放在请求地址的后面。
2.服务器端 bodyParser 模块不能解析 formData 对象表单数据,我们需要使用 formidable 模块进行解析。
1 2 3 4 5 6 const form = new formidable.IncomingForm();form.parse(req, (err, fields, files) => { res.send(fields); });
1. 获取表单对象中属性的值
2. 设置表单对象中属性的值 1 2 formData.set('key' , 'value' );
3. 删除表单对象中属性的值
4. 向表单对象中追加属性值 1 2 formData.append('key' , 'value' );
1 2 3 4 5 6 7 8 9 10 11 var file = document .getElementById('file' )file.onchange = function ( ) { var formData = new FormData(); formData.append('attrName' , this .files[0 ]); xhr.open('post' , 'www.example.com' ); xhr.send(formData); }
实现文件上传的路由 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 app.post('/upload' , (req, res) => { const form = new formidable.IncomingForm(); form.uploadDir = path.join(__dirname, 'public' , 'uploads' ); form.keepExtensions = true ; form.parse(req, (err, fields, files) => { res.send({ path: files.attrName.path.split('public' )[1 ] }); }); });
1 2 3 4 5 6 7 8 9 file.onchange = function ( ) { xhr.upload.onprogress = function (ev ) { bar.style.width = (ev.loaded / ev.total) * 100 + '%' ; } }
1 2 3 4 5 6 7 8 xhr.onload = function ( ) { var result = JSON .parse(xhr.responseText); var img = document .createElement('img' ); img.src = result.src; img.onload = function ( ) { document .body.appendChild(this ); } }