VPN技术 · 2023年11月10日 0

Node.js 文件上传实现

Node.js 文件上传实现

文件上传

在 Node.js 中,可以使用 formidable 模块来处理文件上传。

C:UsersYour Name>npm install formidable

安装完成后,可以在项目中引入该模块:

var formidable = require('formidable');

步骤一:创建上传表单

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, { 'Content-Type': 'text/html' });
  res.write(
    '
' + '' + '' + '
' ); return res.end(); }).listen(8080);

步骤二:解析上传文件

formidable 模块提供强大的功能,一旦文件上传到服务器,它会被解析并存储在临时文件夹中。

var http = require('http');
var formidable = require('formidable');
http.createServer(function (req, res) {
  if (req.url == '/fileupload') {
    var form = new formidable.IncomingForm();
    form.parse(req, function (err, fields, files) {
      res.write('文件上传成功');
      res.end();
    });
  } else {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.write(
      '
' + '' + '' + '
' ); return res.end(); } }).listen(8080);

步骤三:移动文件

成功上传的文件将被放置在临时文件夹中,其路径可以通过 parse() 方法的回调函数获取。要将文件移动到指定的文件夹,可以使用文件系统模块并重命名文件:

var http = require('http');
var formidable = require('formidable');
var fs = require('fs');
http.createServer(function (req, res) {
  if (req.url == '/fileupload') {
    var form = new formidable.IncomingForm();
    form.parse(req, function (err, fields, files) {
      var oldpath = files.filetoupload.path;
      var newpath = 'C:/Users/Your Name/' + files.filetoupload.name;
      fs.rename(oldpath, newpath, function (err) {
        if (err) throw err;
        res.write('文件已上传并移动!');
        res.end();
      });
    });
  } else {
    res.writeHead(200, { 'Content-Type': 'text/html' });
    res.write(
      '
' + '' + '' + '
' ); return res.end(); } }).listen(8080);