文章目录
  1. 1. angular 上传文件
  2. 2. sails 接收文件
  • 参考文档:
  • angular 上传文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    $http({
    method: 'POST',
    url: 'url',
    headers: {
    'Content-Type': undefined
    },
    transformRequest: function(data) {
    var formData = new FormData();
    angular.forEach(function(value, key){
    formData.append(key, value);
    });
    return formData;
    },
    data: {
    file: 'xxxx',
    otherData: 'xxxxx'
    }
    });

    sails 接收文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    var fs = require('fs');
    var Promise = require('bluebird');

    new Promise(function(resolve, reject) {
    req.file('file').upload(function(err, newFiles) {
    if(err || !newFiles || !newFiles[0]) {
    return reject(err);
    }
    resolve(newFiles[0]);
    });
    })
    .then(function(file) {
    filePath = file.fd;
    var stream = fs.createReadStream(filePath);
    return stream;
    })
    .then(function(stream){
    // do something
    })
    .catch(function(e){
    // do something
    })
    .finally(function() {
    fs.unlink(filePath, function(err) {
    if(err) {
    sails.log.warn(err);
    }
    });
    });

    如果仅有文件上传, 或者上传的文件较小,不会发生问题,
    但是既上传文件又上传其他字段

    会导致 sails 无法取得 requestNo 的数据

    故 使用 sails 接收 multipart/form-data 时, 前端上传时文件必须放最后面

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    var fd = new FormData();
    fd.append('requestNo', data.requestNo);
    // file文件必须放最后面
    fd.append('file', data.file);


    return $http({
    method: 'POST',
    url: 'url',
    headers: {
    'Content-Type': undefined
    },
    data: fd,
    transformRequest: angular.identity
    })
    .then(function(data) {
    return data && data.data || {};
    });

    参考文档:


    文章若有纰漏请大家补充指正,谢谢~~
    http://blog.xinshangshangxin.com SHANG殇

    文章目录
    1. 1. angular 上传文件
    2. 2. sails 接收文件
  • 参考文档: