史上最短最敷衍的Nodejs教程(八)文件上傳

Formidable 模塊

這是一個對文件上傳非常好得模塊,被名爲"Formidable" , formidable模塊可以通過NPM進行下載
npm install formidable

當你下載完Formidable模塊,你可以在任何應用中包括模塊

var formidable = require('formidable');

文件上傳

現在你已經可以在Node.js上製作web頁面,讓用戶上傳文件到你的計算機

第一步:創建一個上傳表單

創建一個Node.js文件然後寫上HTML文件上傳的Input框

var http = require('http');

http.createServer(function(req,res){
  res.writeHead(200,{'Contebt-Type':'text/html'});
  res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
  res.write('<input type="file" name="filetoupload"><br>');
  res.write('<input type="submit">');
  res.write('</form>');
  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('File uploaded');
      res.end();
    });
  } else {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
    res.write('<input type="file" name="filetoupload"><br>');
    res.write('<input type="submit">');
    res.write('</form>');
    return res.end();
  }
}).listen(8080);

第三步:保存文件

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('File uploaded and moved!');
        res.end();
      });
 });
  } else {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
    res.write('<input type="file" name="filetoupload"><br>');
    res.write('<input type="submit">');
    res.write('</form>');
    return res.end();
  }
}).listen(8080);

啓動服務
在這裏插入圖片描述

後面就沒演示了,因爲windows系統下會發生文件跨盤傳輸的權限警告,得將node.js程序上傳到服務器,然後windows上傳到雲端的情況就不會報文件跨盤傳輸警告

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章