21xrx.com
2025-06-19 22:25:48 Thursday
登录
文章检索 我的文章 写文章
NodeJS 实现前端上传图片保存功能
2023-07-10 11:58:34 深夜i     23     0
NodeJS 前端 上传 图片 保存功能

随着移动互联网的发展,上传图片已成为前端开发中常见的功能之一。为了提高网站的用户体验,前端上传图片须具备以下特点:快速、安全、易用并且支持大文件上传。Node.js不仅作为一款服务器端编程语言,还有丰富的第三方模块和库,可以非常方便地实现前端上传图片保存功能。

Node.js使用formidable模块来实现图片上传。formidable是一个用于解析form数据的Node.js模块,可以返回服务器上文件的信息,如文件名、大小和类型。首先,我们需要使用npm安装formidable:npm install formidable。

接着,我们可以使用以下代码实现前端上传图片:

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') {
  // 创建formidable实例
  const form = new formidable.IncomingForm();
  // 指定文件上传路径
  form.uploadDir = './upload/';
  // 保存文件的后缀名
  form.keepExtensions = true;
  // 处理form数据
  form.parse(req, function(err, fields, files) {
   res.writeHead(200, {'content-type': 'text/plain'});
   res.write('upload received\n');
   res.end();
  });
  // 监听文件上传完成事件
  form.on('end', function(fields, files) {
   console.log('upload completed');
   // 获取文件名
   const fileName = files.file.path.slice(8);
   // 重命名文件
   fs.rename(files.file.path, `./upload/${fileName}`, () => {});
  });
 } else {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.end(`
   <form action="/upload" enctype="multipart/form-data" method="post">
    <input type="file" name="file" multiple><br><br>
    <input type="submit" value="上传">
   </form>
  `);
 }
}).listen(3000, () => {
 console.log('Server is running at http://localhost:3000');
});

以上代码中,我们创建了一个HTTP服务器,指定了formidable上传文件的路径和保存的后缀名,然后使用form.parse()方法处理form数据,监听文件上传完成事件,最后将上传的文件进行重命名,保存在指定的上传路径下。

在页面中,我们使用HTML的表单标签,enctype属性为multipart/form-data,method属性为post,然后将form的action属性指向我们实现图片上传的代码所在的URL。用户提交form表单后,数据会被发送到指定的URL地址,Node.js服务器会解析数据,处理上传的图片。当上传完成后,服务器将返回上传成功信息,并将上传的图片保存在指定的上传路径下。

总之,NodeJS提供了方便的模块和库,使得实现前端上传图片功能变得非常简单。我们只需要使用formidable模块解析form数据即可。随着前端技术的不断发展,前端上传文件功能也将更加成熟和普及,这对于提高用户体验和丰富网站交互功能具有重要的意义。

  
  

评论区