表达强大的句柄文件

express formidable handle files

我需要解压上传的文件 有人有什么想法吗?下面的代码处理与 ajax 一起使用的上传部分。 主要想法是让文件上传器在仅上传 ZIP 文件后通过创建与 zip 文件、文件夹相同的名称并将所有内容解压缩到该文件夹​​来解压缩文件。

我也通过 html 只接受 zip 文件,但它似乎不是 accept=".zip, .tar.gz, .rar" 的正确解决方案,因为它可以很容易地删除此限制并上传您想要的任何内容。是否有任何其他解决方案可以限制仅上传 zip 文件?

var express = require('express');
var app = express();
var path = require('path');
var formidable = require('formidable');
var fs = require('fs');

app.use(express.static(path.join(__dirname, 'public')));

app.get('/', function(req, res){
  res.sendFile(path.join(__dirname, 'public/views/index.html'));
});

app.post('/uploads', function(req, res){

  var form = new formidable.IncomingForm();

  form.multiples = true;

  form.uploadDir = path.join(__dirname, '/uploads');

  form.on('file', function(field, file) {
    fs.rename(file.path, path.join(form.uploadDir, file.name));
  });

  form.on('error', function(err) {
    console.log('An error has occured: \n' + err);
  });

  form.on('end', function() {
    res.end('success');
  });

  form.parse(req);

});

var server = app.listen(3000, function(){
  console.log('Server listening on port 3000');
});

这是一个库,如果有人 运行 和我一样遇到同样的问题,您可以将其合并到代码中

https://www.npmjs.com/package/unzip