我已经在谷歌上搜索了所有网络,但我还没有找到我的问题。 我使用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;
答案 0 :(得分:0)
您正在发送多部分请求。这意味着它不仅仅是您上传的单个文件的原始内容,而是一种特殊格式,允许多个部分,其中每个部分都是一个单独的表单字段(在您的情况下,只有一个部分 - - 文件表单字段)。您应该考虑使用可以解析multipart/form-data
busboy
,multiparty
或formidable
的{{1}}请求的模块。