在不使用 express.js 保存文件的情况下使用文件的内容?

米罗斯拉夫·萨拉切维奇

我正在编写一个应用程序,我可以在其中上传 CVS 文件。我有一个 CVS 解析器,因此我可以从前端将 CSV 上传到后端,对其进行处理并将其保存到数据库中。之后,我正在删除该文件。

我正在使用 multer 接受文件并将其保存到硬盘驱动器,然后我可以读取文件并使用文件的内容并删除文件。那里一切都很好。

我想弄清楚是否有办法完全跳过实际保存文件。是否有一种简单的方法可以从'multipart/form-data'表单提交文件并直接使用 express 读取内容而无需将其保存在文件系统上?

仅供参考,这就是我现在所拥有的,并且按预期工作

在前端:

static fileUpload(file) {
  const url = '/api/statement-upload';
  const formData = new FormData();
  formData.append('file', file);
  const config = {
    headers: {
      'content-type': 'multipart/form-data'
    }
  };
  return post(url, formData, config);
}

在我的快速服务器上,我使用 multer 并定义了这样的路由:

import multer from 'multer';

export default function (router) {
  const upload = multer({dest: 'uploads/'});

  router.use('/api/statement-upload', upload.single('file'), (req, res) => {
    cvsParser(req.file.path)
      .then(() => res.json({error: false}))
      .catch(e => res.json({error: e}));
  });

  return router;
};

在我的 cvsParser 中,我有这个:

export default function (filePath) {
  let content = fs.readFileSync(filePath, 'binary');  
  fs.unlink(filePath, () => {});

  // do nasty stuff to content and save it gently in the database
}

简而言之,有没有一种方法可以做到这一点,而不必在使用文件内容之前将 CSV 保存到文件系统?

考虑到文件编码等,这甚至可能fs,也许没有办法使用

沙尚克·维维克

当您不想将 csv 存储在文件系统中并读取内容时,可以这样做。就我而言,我必须将 csv 文件的内容作为字符串传递给另一台服务器(不保存在服务器的本地系统中)。

const multer = require('multer');
const upload = multer({ storage: multer.memoryStorage() })

app.post(
        '/users/bulkUpload',
        upload.single('csvFile'),
        this.usersRoutes.uploadUserData
 );

并在uploadUserData()

uploadUserData = async(
    req: Request,
    res: Response,
    next: any
): Promise<any> => {
    try {
        const options = {
                formData : {
                    'upload': String(req.file.buffer)
                },
                headers: {
                    authorization: req.token,
                    'Content-type': 'multipart/form-data'
                },
                json: true
        };
        const response = await this.http.post.exec(
                '/somePostUrl/',
                options
        );
        return res.status(200).json(response.body);
    }catch (error) {
        return next(error);
    }
}

在这里,console.log(String(req.file.buffer))将向您显示 csv 文件的内容作为字符串。

我希望它能帮助你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在不使用Express的情况下将图像上传到Node.js中的服务器

来自分类Dev

是否可以在不使用中间件功能的情况下增强express.js req和res变量?

来自分类Dev

在不使用Express的情况下将图像上传到Node.js中的服务器

来自分类Dev

是否可以在不使用中间件功能的情况下增强express.js的req和res变量?

来自分类Dev

在不使用文件扩展名的情况下使用Node.JS在浏览器中显示json文件

来自分类Dev

Express.js:填充不使用Jade的html标签

来自分类Dev

如何在不使用jquery的情况下让Hammer.js与svg文件一起使用?

来自分类Dev

如何在不使用jquery的情况下让Hammer.js与svg文件一起使用?

来自分类Dev

如何在不使用框架(例如ex = express)的情况下,将模板(手把或其他替代品)与Node.js一起使用?

来自分类Dev

不使用模板引擎时如何在 Express.js 视图中包含 CSS 文件?

来自分类Dev

有什么方法可以在不使用 Python 中的可执行文件的情况下抓取 JS 渲染页面?

来自分类Dev

不使用express.js将图像保存到Node.js服务器

来自分类Dev

如何在不使用ID的情况下在.js.erb文件中使用$(this)(Ruby on Rails)

来自分类Dev

如何在不使用ID的情况下在.js.erb文件中使用$(this)(Ruby on Rails)

来自分类Dev

NeDB无法使用Express.JS保存到文件中

来自分类Dev

如何在不使用FileOutputStream的情况下使用SAF附加文件内容

来自分类Dev

在没有模板引擎的情况下使用 Node.js + Express

来自分类Dev

如何在不使用PowerShell扩展的情况下知道.cab文件内容的大小?

来自分类Dev

如何在不使用PowerShell扩展的情况下知道.cab文件内容的大小?

来自分类Dev

需要描述用于在不使用ls或cd的情况下删除文件夹内容的命令

来自分类Dev

如何在不使用文本编辑器的情况下查看文件的内容

来自分类Dev

在不使用Plotly Express的情况下将垂直矩形添加到绘图子图

来自分类Dev

Nodejs Express 在不使用 url 参数的情况下提供相同的可变页面

来自分类Dev

如何在不使用字符串比较的情况下使用node.js快速将节点附加到XML文件中

来自分类Dev

使用 Express JS 的路由

来自分类Dev

如何在不使用GUI的情况下使打开的LibreOffice保存文件?

来自分类Dev

如何在不使用编辑器的情况下以编程方式在 Eclipse 中保存文件?

来自分类Dev

使用Node Express JS下载文件

来自分类Dev

作法:不使用Express而使用ejs

Related 相关文章

  1. 1

    在不使用Express的情况下将图像上传到Node.js中的服务器

  2. 2

    是否可以在不使用中间件功能的情况下增强express.js req和res变量?

  3. 3

    在不使用Express的情况下将图像上传到Node.js中的服务器

  4. 4

    是否可以在不使用中间件功能的情况下增强express.js的req和res变量?

  5. 5

    在不使用文件扩展名的情况下使用Node.JS在浏览器中显示json文件

  6. 6

    Express.js:填充不使用Jade的html标签

  7. 7

    如何在不使用jquery的情况下让Hammer.js与svg文件一起使用?

  8. 8

    如何在不使用jquery的情况下让Hammer.js与svg文件一起使用?

  9. 9

    如何在不使用框架(例如ex = express)的情况下,将模板(手把或其他替代品)与Node.js一起使用?

  10. 10

    不使用模板引擎时如何在 Express.js 视图中包含 CSS 文件?

  11. 11

    有什么方法可以在不使用 Python 中的可执行文件的情况下抓取 JS 渲染页面?

  12. 12

    不使用express.js将图像保存到Node.js服务器

  13. 13

    如何在不使用ID的情况下在.js.erb文件中使用$(this)(Ruby on Rails)

  14. 14

    如何在不使用ID的情况下在.js.erb文件中使用$(this)(Ruby on Rails)

  15. 15

    NeDB无法使用Express.JS保存到文件中

  16. 16

    如何在不使用FileOutputStream的情况下使用SAF附加文件内容

  17. 17

    在没有模板引擎的情况下使用 Node.js + Express

  18. 18

    如何在不使用PowerShell扩展的情况下知道.cab文件内容的大小?

  19. 19

    如何在不使用PowerShell扩展的情况下知道.cab文件内容的大小?

  20. 20

    需要描述用于在不使用ls或cd的情况下删除文件夹内容的命令

  21. 21

    如何在不使用文本编辑器的情况下查看文件的内容

  22. 22

    在不使用Plotly Express的情况下将垂直矩形添加到绘图子图

  23. 23

    Nodejs Express 在不使用 url 参数的情况下提供相同的可变页面

  24. 24

    如何在不使用字符串比较的情况下使用node.js快速将节点附加到XML文件中

  25. 25

    使用 Express JS 的路由

  26. 26

    如何在不使用GUI的情况下使打开的LibreOffice保存文件?

  27. 27

    如何在不使用编辑器的情况下以编程方式在 Eclipse 中保存文件?

  28. 28

    使用Node Express JS下载文件

  29. 29

    作法:不使用Express而使用ejs

热门标签

归档