html中可以上传文件的唯一控件是<input type="file">
表单提交:
当表单中包含上传文件控件时,表单的enctype
必须指定为multipart/form-data
,method
必须是post
,浏览器才能正确编码并以multipart/form-data格式发送表单数据。(action不设置时,默认提交到本页面)
出于安全考虑,浏览器只允许用户点击上传文件控件来选择本地文件,所以用JS对<input type="file">
的value赋值是没有任何效果的。用户选择了某个文件后,JS也无法获得该文件的真实路径。通常上传的文件都是由后台服务器处理
ajax提交:
// formData IE10及以上
//如果已经存在form表单,直接取得form对象
var formdata=new FormData(document.getElementById("form"));
// 没有form表单时创建空的FormData对象,然后使用append方法加入
//var formdata=new FormData(document.getElementById("file1").files[0]);
var formdata=new FormData(document.getElementById("file1").files[0]);
formdata.append ("key" , "value");
参考廖雪峰-操作文件