使用multiparty和请求模块进行流式传输时出现“错误:套接字挂起”

时间:2015-09-30 19:36:19

标签: javascript node.js express connect

以下是代码:

var app = require("express")();
var multiparty = require("multiparty");
var request = require("request");
var ims = require("imagemagick-stream");
var fs = require("fs");
var Busboy = require('busboy');

app.post('/submit', function(httpRequest, httpResponse, next){

    var form = new multiparty.Form();

    form.on("part", function(part){
        if(part.filename)
        {
            var formData = {
                thumbnail: {
                    value:  part,
                    options: {
                        filename: part.filename,
                        contentType: part["content-type"]
                    }
                }
            };

            request.post({url:'http://localhost:7070/store', formData: formData}, function (err, httpResponse, body) {
                if(err) {
                    return console.error('upload failed:', err);
                }

                console.log('Upload successful!  Server responded with:');
            });
        }
    })

    form.on("error", function(error){
        console.log(error);
    })

    form.parse(httpRequest);    

});

app.get('/', function(httpRequest, httpResponse, next){ 
    httpResponse.send('<form action="http://localhost:9090/submit" method="post" enctype="multipart/form-data"><input type="file" name="file" /><input type="submit" value="xxx" /></form>');
});

app.listen(9090);

这里我将用户提交的文件上传到另一台服务器而不将其保存在磁盘上。

我收到错误upload failed: { [Error: socket hang up] code: 'ECONNRESET' }

在端口7070上运行的服务器上,我收到错误Error: stream ended unexpectedly

如果我使用文件系统可读流替换part中的value:part,那么它可以正常工作。

我认为它缺少内容长度标题。但是当我添加它时,我得到了一个不同的错误。

提前致谢。

0 个答案:

没有答案