Node.js在没有附加框架的情况下将文件上传到服务器

我正在写一个简单的上传网站。 我使用XmlHTTPRequest上传文件。 到目前为止,我只体验过这一部分,服务器已经为文件上传做好了准备。 但现在我需要创建自己的服务器来在本地测试这个Web应用程序。 我选择了Node.js,因为它使用JavaScript并且与其他服务器相比看起来非常简单。 但是,我仍然没有使用它的经验,所以我不知道,如何从请求“捕获”上传的文件并将它们保存到我的PC中的某个文件夹。 我一直试图找到一个解决方案,但我发现每个人都在使用一些框架。 如果可能的话,我不想使用这些,因为我不想为我的服务器代码添加任何复杂性,因为它不是我的项目的主要点,我需要它真的最简单,仅用于测试目的。

所以,请你推荐一些简单的方法吗? 如果您认为,没有框架的“清除”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); 

好吧,最终我用这种方式解决了它,使用了fs强大的function 。 Web应用程序和服务器之间的通信是一种经典的请求 – 响应,它在Node.js中很容易处理。

以下是完整的服务器代码: http : //pastebin.com/cmZgSmrL


 var fs = require('fs'); var formidable = require('formidable'); //-----------------------//------------------------------------------------------------------------------------- //--- UPLOAD handling ---// //-----------------------// if (req.url == '/upload' && req.method.toLowerCase() == 'post') { var form = new formidable.IncomingForm(); form.parse(req, function(err, fields, files) { if (err) throw err; fs.readFile( files.filepath.path, function (err, data) { if (err) throw err; var fileName = files.filepath.name; fs.writeFile( __dirname + '/uploadedFiles/' + fileName, data, function (err) { if (err) throw err; //-----------------------------------------------//--------------------------------------------- //--- LOAD and APPEND external JSON file with ---// //--- data from request ---// //-----------------------------------------------// var jsonObj = require('./storedFilesList.json'); jsonObj[fileName] = {size:files.filepath.size, expDate:'-', path:__dirname + '/uploadedFiles/' + fileName}; var jsonString = JSON.stringify(jsonObj); // convert JSON obj to String fs.writeFile('storedFilesList.json', jsonString, function(err){ if (err) throw err; console.log('File ' + fileName + ' was succesfully written to JSON ext file.'); }); console.log('File ' + fileName + ' was succesfully saved.'); }); }); res.writeHead(200, {'content-type': 'text/plain'}); res.write('OK'); res.end( util.inspect({fields: fields, files: files}) ); }); return; }