21xrx.com
2024-12-22 19:55:50 Sunday
登录
文章检索 我的文章 写文章
Nodejs实现上传文件的读取
2023-07-04 02:31:16 深夜i     --     --
Nodejs 上传文件 读取

Node.js是一款基于Chrome V8引擎的JavaScript运行时。它能够在服务器端运行JavaScript。在Web开发过程中,上传文件是一个常见的需求。Node.js通过流的方式,实现了非常方便的文件读取功能。

在Node.js中,通过fs模块来读取上传文件,使用下面的代码可以实现上传文件的读取:


const http = require('http');

const formidable = require('formidable');

const fs = require('fs');

http.createServer(function (req, res) {

  if (req.url == '/upload' && req.method.toLowerCase() == 'post') {

    const form = new formidable.IncomingForm();

    form.parse(req, function (err, fields, files) {

      const oldpath = files.filetoupload.path;

      const newpath = './uploads/' + 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="upload" 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);

上面的代码实现了一个简单的上传文件的服务器。首先判断请求的URL和请求的方法,如果是POST提交并且URL为upload,就使用formidable模块来解析请求内容,根据请求中的文件信息,使用fs模块将上传的文件保存到服务器本地的uploads目录下,并将文件名返回客户端。

需要注意的是,文件上传需要在表单中进行,所以在没有上传文件时就需要返回表单页面,等待用户上传。表单页面通过res.writeHead()方法设置Content-Type为text/html,通过res.write()方法来输出HTML代码。其中,表单中的enctype设置为multipart/form-data表示上传二进制文件。

通过上面的代码实现文件上传的读取功能,可以看出Node.js流的读取方式十分方便。Node.js是一个强大的后端开发工具,通过Node.js可以实现更强大的Web应用程序。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复