Node.js学习过程总结(三)之文件上传和下载

Http协议文件的上传与下载

浏览器是如何上传文件的?

网页端,其中mp3Blob为html5新特性中的二进制对象,FormData可以理解成一个虚拟的表单对象:

                var mFormData = new FormData();
                mFormData.append('Voice', mp3Blob);
                mFormData.append('State', "嗨啊");
                $.ajax({
                    url: "/PostMessage",
                    type: "post",
                    data: mFormData,
                    processData: false,
                    contentType: false,
                    success: function(data) {}
                });

含有文件信息的http头请求如下:

{ host: '127.0.0.1:6324',
  connection: 'keep-alive',
  'content-length': '131386',
  accept: '*/*',
  origin: 'http://127.0.0.1:6324',
  'x-requested-with': 'XMLHttpRequest',
  'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
  'content-type': 'multipart/form-data; boundary=----WebKitFormBoundarySWrbL4OY8FnqqYUF',
  referer: 'http://127.0.0.1:6324/main',
  'accept-encoding': 'gzip, deflate',
  'accept-language': 'zh-CN,zh;q=0.8' }

服务器是如何接受文件的?

如果是手动解析的话,需要根据请求中的头部获取boundary,再根据boundary来进行字符串切块,再分块处理,过于繁琐,但又不想引入express框架,于是用了formidable这个模块,用于浏览器提交的表单处理。

    //创建表单上传
    var form = new formidable.IncomingForm();
    //设置编辑
    form.encoding = 'utf-8';
    //设置文件存储路径
    form.uploadDir = Config['RootPath'];
    //保留后缀
    form.keepExtensions = true;
    //设置单文件大小限制
    form.maxFieldsSize = 2 * 1024 * 1024;
    //form.maxFields = 1000;  设置所以文件的大小总和

    form.parse(Request, function(err, fields, files) {

    });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值