实现文件上传

  1. 直接上传
    form 中添加
    enctype="multipart/form-data"
    例如:
  2. 使用formData 进行ajax上传
//是否支持formData
if(window.FormData) { 
  var formData = new FormData();
  // 建立一个upload表单项,值为上传的文件
  formData.append('upload', document.getElementById('upload').files[0]);
  //创建xhr对象
       var xhr = new XMLHttpRequest();
  xhr.open('POST', actionUrl);
  // 定义上传完成后的回调函数
  xhr.onload = function () {
    if (xhr.status === 200) {
      console.log('上传成功');
    } else {
      console.log('出错了');
    }
  };
  xhr.send(formData);
} 
  1. 服务端解析(Node)
//使用formidable 中间件
var form = new formidable.IncomingForm()
//编码方式
form.encode = ‘utf-8’
//保存路径,路径不存在会报错
form.uploadDir = ‘’
//是否保留扩展名
form.keepExtensions = true
//文件大小
form.maxFieldsSize = 2*1024*1024
form.parse(req, function(err, fields, files){
//回调
//files对象的格式
var sieze = files.size
//文件的绝对路径
var path = files.path
//文件的名称
var name = files.name
//文件的类型
var type = files.type
//文件的时间戳
var mtime = files.mtime 
})

你可能感兴趣的:(实现文件上传)