方式一: 直接利用表单上传文件
form 标签需要设置enctype =”multipart/form-data” 才能成功
如果不用默认的submit按钮 ,js操作表单提交需要用到submit()方法
方式二:ajax 利用FormData对象上传文件
此时: form 标签不需要设置enctype =”multipart/form-data” 甚至可以省略form标签,直接将input里的文件数据applend到FormData里面
ajax发送前不能设置请求头部的Content-Type
,应交给浏览器来处理(设定Boundary等工作)。
而非文件上传一定要加上这个xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");。使得ajax像 HTML 表单那样 POST 数据,要求数据按照key1=value1&key2=value2的格式发送给后端