node.js - request 上传文件错误
伊谢尔伦
伊谢尔伦 2017-04-17 13:06:41
[Node.js讨论组]

我使用 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? 谢谢。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(1)
高洛峰

用pipe试试?

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号