提问人:user3075373 提问时间:7/17/2015 更新时间:5/6/2020 访问量:1607
节点 .js 原生文件上传表单
Node.js native file upload form
问:
我有一个问题:有什么方法可以在node.js中创建本机文件上传系统吗?没有像 multer、busboy 等模块。我只想从文件形式中保存它。喜欢:
<form action="/files" method="post">
<input type="file" name="file1">
</form>
是否可以在 node.js 中原生访问此文件?也许我错了,但如果这个模块做到了,那一定是可能的,对吧?
答:
3赞
Nebojsa Jevdjovic
5/6/2020
#1
这是可能的。下面是一个示例。
const http = require('http');
const fs = require('fs');
const filename = "logo.jpg";
const boundary = "MyBoundary12345";
fs.readFile(filename, function (err, content) {
if (err) {
console.log(err);
return
}
let data = "";
data += "--" + boundary + "\r\n";
data += "Content-Disposition: form-data; name=\"file1\"; filename=\"" + filename + "\"\r\nContent-Type: image/jpeg\r\n";
data += "Content-Type:application/octet-stream\r\n\r\n";
const payload = Buffer.concat([
Buffer.from(data, "utf8"),
Buffer.from(content, 'binary'),
Buffer.from("\r\n--" + boundary + "--\r\n", "utf8"),
]);
const options = {
host: "localhost",
port: 8080,
path: "/upload",
method: 'POST',
headers: {
"Content-Type": "multipart/form-data; boundary=" + boundary,
},
}
const chunks = [];
const req = http.request(options, response => {
response.on('data', (chunk) => chunks.push(chunk));
response.on('end', () => console.log(Buffer.concat(chunks).toString()));
});
req.write(payload)
req.end()
})
这个问题很有趣。我想知道为什么还没有回答(4 年零 9 个月)。
评论