上传到nodejs时损坏的文件/图像

时间:2014-10-20 22:16:30

标签: javascript node.js multipartform-data formidable

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

以下是代码示例:



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");
        });
    });
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

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