IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    request 上传文件。使用 transform stream 作为 form data 中的文件数据。出现 typeErr 错误

    dmoneh发表于 2015-12-01 08:13:27
    love 0

    我使用 multiparty 解析前端上传的文件,然后使用 request 上传到文件服务器。

    form.on('part', function(part) {
    
        if (part.filename) {
    
            var formData = {
                name: part.filename,
                my_file: part
            };
    
            request.post({
                url: 'http://service.com/upload',
                formData: formData
            }, function optionalCallback(err, httpResponse, body) {
                if (err) {
                    return console.error('upload failed:', err);
                }
                console.log('Upload successful! Server responded with:', body);
            });
    
        }
    
    });
    
    

    request的官方示例是将文件的 readStream , 传入 formdata。例如

    var formData = {
        my_file: fs.createReadStream(__dirname + '/unicycle.jpg'),
    }
    

    但是我并不想先创建临时文件,然后再获取 readStream。 由于 multiparty的 part 也是一种可读流, transform stream,它同时具有 readStream 和 writeStream 的接口,所以我想将 part 直接传入formdata。 但是遇到了下面的错误

    TypeError: form-data: Invalid non-string/buffer chunk

    由于文件服务器是远端的线上服务器,它的细节我并不清楚。 但是它确实能支持从文件创建的 readStream 的 formdata 的上传。 但是 part 就不行。

    这里想请教一下, transform stream 和 fs.createStream 有什么不同? 有什么办法可以将 transform stream 的数据 转交给 readStream? 谢谢。



沪ICP备19023445号-2号
友情链接