JS/html/form/XMLHttpRequest Ajax 批量上传文件/图片的3种方式
2016-04-02 16:17
495 查看
写在前面:后端选择你项目中使用的语言接收并处理图片。
由于上传图片都是以jQuery插件,为了纯js的崛起,遂选择ajax上传的方式,但在查找相关实例的时候着实困难重重,仅这个上传功能来回测试不下于2天的时间,最终还是执着战胜了困境。
以下3种方式都经多次测试通过。
重要说明:
第一种:切记:form -> enctype="multipart/form-data"
第二种:阻止默认submit:event.preventDefault();
第三种:var formData = new FormData();
formData.append('photos', file);
xhr.send(formData);
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Ajax文件上传</title> </head> <body> <form action="/upload" method="post" enctype="multipart/form-data"> <h1>1、纯HTML上传文件</h1> <input type="file" name="pic" accept="image/*"> <input type="submit"> </form> <form id="file-form"> <h1>2、JS post form file</h1> <input type="file" name="images" multiple accept="image/*"/> <button type="submit" name="btn">上传文件</button> </form> <div> <h1>3、JS Ajax post file</h1> <input type="file" id="files" name="photos" multiple accept="image/*"/> <button type="submit" id="upload">上传文件</button> </div> <script> // JS post form file var form = document.getElementById('file-form'); form.onsubmit = function(event) { event.preventDefault(); var files = form.images.files; var file = files[0]; var formData = new FormData(); formData.append('images', file); var xhr = new XMLHttpRequest(); xhr.open('POST', '/upload', true); xhr.onload = function () { if (xhr.status === 200) { // File(s) uploaded. form.btn.innerText = '上传成功!'; console.log('Upload Finished!!!!!!!!!!'); } else { alert('An error occurred!'); } }; xhr.send(formData); }; var files = document.getElementById('files'); var uploadBtn = document.getElementById('upload'); uploadBtn.onclick = function() { var xhr = new XMLHttpRequest(); xhr.open('POST', '/upload', true); xhr.onload = function () { if (xhr.status === 200) { // File(s) uploaded. uploadBtn.innerHTML = 'Upload Finished'; } else { alert('An error occurred!'); } }; var file = files.files[0]; var formData = new FormData(); formData.append('photos', file); xhr.send(formData); } </script> </body> </html>
阅读更多
相关文章推荐
- 利用 HTML 5 的多图片上传及预览(不含前端的文件分割) 分类: HTML5 文件上传 上传图片的预览 XMLHTTPRequest对象 2014-01-13 11:05 419人阅读 评论(0) 收藏
- ajax上传文件,提交表单,使用FormData和XMLHttpRequest提交表单
- ajax上传文件,提交表单,使用FormData和XMLHttpRequest提交表单
- 玩转图片上传————原生js XMLHttpRequest 结合FormData对象实现的图片上传
- ajax异步上传文件FormDate方式,html支持才可使用
- 【转】asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- ajax加载本地html文件出现 XMLHttpRequest cannot load的问题
- 用 jQuery.ajax 基于 XMLHttpRequest,FormData 的表单上传
- 用ajax上传文件(XMLHttpRequest)
- asp.net(c#)使用HttpWebRequest附加携带请求参数以post方式模拟上传大文件(以图片为例)到Web服务器端
- 使用Javascript XMLHttpRequest模拟表单(Form)提交上传文件
- 解决ajax XMLHttpRequest 跨域上传文件失败问题
- vuejs使用FormData对象,ajax上传图片文件
- ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践
- 前端文件上传3:使用xmlhttprequest上传图片(web项目)
- jQuery利用XMLHttpRequest()和FormData()实现同时上传文件和数据
- 1次ajax请求(XMLHttpRequest)上传多个文件,支持进度条
- 用 jQuery.ajax 基于 XMLHttpRequest,FormData 的表单上传
- ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据 之最佳实践
- ajax 请求二进制流 图片 文件 XMLHttpRequest 请求并处理二进制流数据