我有一个带有表单的网页,表单有文件输入,当我提交表单时,我希望服务器将其写入文件服务器端。
我尝试使用此表单上传多个测试图像,到目前为止,每个测试图像都是包含原始文件文件名的纯文本文件。除了“使用Express!”,“使用This!”,“使用那个!”,“使用其他东西!”之外,我没有找到任何有关如何在线执行此操作的良好信息或示例。而且它非常恶化。
答案 0 :(得分:4)
我同意Tomalak在评论中所说的话;您尝试单独使用Node解决的问题并不是无关紧要的,并且需要对多种不同的技术有一个非常透彻的理解。
那就是说,我会帮助你开始,希望这对于阅读做这样做的模块的源代码来说是一个很好的起点。
只使用Node,这里是一个最小的服务器,它会在任何请求的主体上记录到控制台(我不建议发送一个大文件,或二进制文件...开始带文本文件):
var http = require('http');
var server = http.createServer(function(req, res) {
if(req.url === '/favicon.ico') return res.statusCode = 404, res.end();
console.log(req.method + ' ' + req.url);
var data = '';
req.on('data', function(chunk) {
data += chunk;
});
req.on('end', function() {
console.log(data);
});
res.end('done');
});
server.listen(3000, function() {
console.log('listening on 3000');
});
然后您可以创建一个HTML表单来连接它:
<!doctype html>
<html>
<head>
</head>
<body>
<form action="http://localhost:3000" method="POST" enctype="multipart/form-data">
<input type="file" name="f">
<input type="submit">
</form>
</body>
</html>
解析multipart/form-data
并非易事,但您可以从这里阅读文档开始:
http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4
如果你想看一个人的multipart/form-data
解析器的实现,这个非常可靠: