【发布时间】:2015-01-03 00:34:24
【问题描述】:
我正在写一个简单的上传网站。我使用XmlHTTPRequest 上传文件。到目前为止,我只体验了这一部分,服务器已经准备好上传文件。但现在我需要制作自己的服务器来在本地测试这个 Web 应用程序。我选择了 Node.js,因为它使用 JavaScript 并且与其他服务器相比显得非常简单。但是,我在使用这个方面不是很有经验,所以我不知道如何从请求中“捕获”上传的文件并将它们保存到我电脑中的某个文件夹中。我一直在努力寻找解决方案,但我发现的每个人都在使用一些框架。如果可能的话,我不想使用这些,因为我不想给我的服务器代码增加任何复杂性,因为它不是我项目的重点,我真的需要它尽可能简单,只是为了测试目的。
那么,你能推荐我一些简单的方法吗?如果您认为没有框架的“清晰”Node.js 并不理想,请随意描述任何其他解决方案,我会尽力理解它:-)
我已经编写了打印一些语句并加载我的源代码的服务器的基本部分:
var http = require('http');
var fs = require('fs');
var path = require('path');
http.createServer(function(request, response) {
console.log(request.method + ' ' + request.url);
var filePath = '.' + request.url;
if (filePath == './')
filePath = './index.html';
if (filePath.indexOf('/../') !== -1) {
response.writeHead(400);
response.end();
} else {
var extname = path.extname(filePath);
var contentType = 'text/plain';
switch (extname) {
case '.js': contentType = 'text/javascript'; break;
case '.html': contentType = 'text/html'; break;
case '.css': contentType = 'text/css'; break;
}
fs.exists(filePath, function(exists) {
if (exists) {
fs.readFile(filePath, function(error, content) {
if (error) {
response.writeHead(500);
response.end();
} else {
response.writeHead(200, { 'Content-Type': contentType });
response.end(content, 'utf-8');
}
});
} else {
response.writeHead(404);
response.end();
}
});
}
}).listen(8080);
【问题讨论】:
-
为什么要重新发明轮子? Node 是关于库和模块化的。
-
框架降低了复杂性。它们不会增加复杂性..
-
好的,你认为 Express 最适合这个还是我应该寻找更好的东西(更简单:-))?我认为使用它们会使我的代码难以理解。
-
如果我理解得很好,函数 put() 是我要找的吗?我只是将他们的 URL 提供为 request 作为第一个参数。如果我错了,请纠正我。
标签: javascript jquery node.js file-upload