1

我已经用谷歌搜索了所有的互联网,但我还没有找到我的问题。我正在使用 multipart 上传到 nodejs,但是我所有的文件都损坏了,我使用了许多解析解决方案,我可以用强大的方法来完成,但我想学习如何自己解析。输出文件的二进制代码与原文件完全相同[大小和二进制(我使用hexdump -C int终端检查)]。

这是代码示例:

var http = require("http");
var fs = require("fs");

http.createServer(function(req, res){
    if(!((req.url === "/upload") && (req.method === "POST"))){
        home(res);
    }else{
        upload(req, res);
    }
}).listen(8888);

function home(res){
    res.end("<html><body><form action='/upload' method='post' enctype='multipart/form-data''><input name='file' type='file'/><input type='submit'></form></body></html>");
}

function upload(req, res){
   
    var data = "";
    req.setEncoding("binary");
    req.addListener("data", function(chunk){
        data = chunk.split("\r\n")[4];/*This was my last chance, but it also failed*/
    });
    req.addListener("end", function(){
        res.end();
        console.log(data);
        fs.writeFile("icone.ico", data, "binary", function(err){/*I also used fs.createWriteStream*/
            console.log("done");
        });
    });
}

4

1 回答 1

0

您正在发送一个多部分请求。这意味着它不仅是您上传的单个文件的原始内容,而且是一种特殊格式,允许多个部分,其中每个部分都是一个单独的表单字段(在您的情况下,只有一个部分 - 文件表单字段) . 您应该考虑使用可以multipart/form-data为您解析请求的模块,例如busboymultipartyformidable.

于 2014-10-20T23:59:41.680 回答