使用formidable插件简单完成文件上传
By FreelyTomorrow profile image FreelyTomorrow
1 min read

使用formidable插件简单完成文件上传

NodeJS中使用formidable插件简单完成文件上传

安装formidable

npm install formidable@v2

html上传表单

<body>
    <h1>文件上传</h1>
    <form action="/portrait" method="post" enctype="multipart/form-data">
        <label>用户名:<input type="text" name="username"></label><br>
        <label>头像: <input type="file" name="portrait"></label><br>
        <label><button>提交</button></label>
    </form>
</body>

其中enctype="multipart/form-data这个属性是文件上传的必要的属性设置,这个属性可以把媒体文件转换为二进制码。

使用formidable处理文件上传

引入formidable

const formidable = require('formidable');

创建路由

router.post('/portrait', (req, res) => {
  //创建表单对象
  const form = formidable({
    multiples: true,
    //设置文件的上传目录
    uploadDir: __dirname + '/../public/images',
    //保持文件后缀
    keepExtensions: true
  });
  //解析请求报文
  form.parse(req, (err, fields, files) => {
    if (err){
      next(err);
      return;
    }
    console.log(files);
    console.log(fields);

    //为了用户以后访问,服务器保存图片路径 /iamges/e823bf2508e2dc4fef7339c00.jpg
    let url = '/images/' + files.portrait.newFilename; 
    res.send(url);
  });
});

在实际开发中,图片的路径应该保存在数据库中,这样用户在访问时,可以通过后端程序构造出图片的完整url,并在前端渲染。

By FreelyTomorrow profile image FreelyTomorrow
Updated on
软件开发 NodeJS