首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用nodejs读取文件内容?

如何使用nodejs读取文件内容?
EN

Stack Overflow用户
提问于 2016-11-02 04:14:10
回答 2查看 1.4K关注 0票数 0

我有来自客户端的文件,我必须在服务器端读取这些文件,然后发送回客户端进行下载,如何使用nodejs完成该任务。我尝试使用fs,但遇到一些错误。

console.log(data)将作为空对象出现

server.js

代码语言:javascript
复制
   var multiparty = require('multiparty');

var data = new multiparty.Form();
export function create(req, res) {

 data.parse(req, function(err, fields, files) {
   console.log(files);
    var fileContent = fs.readFileSync(files.file[0].path,'utf8');
     res.json(fileContent   );
    });
}

router.js

代码语言:javascript
复制
var express = require('express');
var controller = require('./fileUpload.controller');

var router = express.Router();

router.post('/fileUpload',controller.create);


module.exports = router;

fileData

代码语言:javascript
复制
{ file:
   [ { fieldName: 'file',
       originalFilename: 'sco_poc.bpmn',
       path: 'C:\\Users\\9u\\AppData\\Local\\Temp\\f4DG8L7nCpNyNvVPYqGPkd44.bpmn',
       headers: [Object],
       size: 11078 } ] }
EN

回答 2

Stack Overflow用户

发布于 2016-11-02 11:33:59

我假设你正在尝试从你的JSON对象'fileData‘下载一个本地文件。下面的示例是用NodeJS编写的

首先,你需要把你的JSONobject串起来

代码语言:javascript
复制
    var jsonString = JSON.stringify({ file:
   [ { fieldName: 'file',
       originalFilename: 'sco_poc.bpmn',
       path: 'C:\\Users\\9u\\AppData\\Local\\Temp\\f4DG8L7nCpNyNvVPYqGPkd44.bpmn',
       headers: [Object],
       size: 11078 } ] });
//console.log(jsonString)//print jsonString contents

其次,将其解析为JavaScript对象

代码语言:javascript
复制
var jsonObj = JSON.parse(jsonString);
//console.log(jsonObj); //print jsonObj contents

第三,从jsonObj获取路径

代码语言:javascript
复制
var path = jsonObj.file[0].path;

最后,读取(本地)文件

代码语言:javascript
复制
fs.readFile(path,function(err,data){
        var fileData="";
        fileData+=data;
        res.writeHead(200, {
            'Location': '<if needed>',
            'Content-Type':'<expected content-type>'
        });
        res.end(fileData); //ends response, and sends to client
    });
票数 0
EN

Stack Overflow用户

发布于 2016-11-03 00:02:45

如果您查看多方NPM页面上的第一个示例:https://www.npmjs.com/package/multiparty,您将看到您需要为每个新请求运行此示例,而不仅仅是一次又一次地重用:

代码语言:javascript
复制
var form = new multiparty.Form();

所以,首先,把它移到你的请求处理程序中。然后,如果您不确定如何使用结果,我建议您添加以下内容:

代码语言:javascript
复制
console.log(fields, files);

而且,这应该会向您显示您实际拥有的数据。

仅供参考,您可以使用以下命令查看解析过程中的错误:

代码语言:javascript
复制
form.on('error', function(err) {
  console.log('Error parsing form: ' + err.stack);
});

另外,请注意文档中的以下陈述:

如果提供了cb,则将autoFields和autoFiles设置为true,并收集所有字段和文件并将其传递给回调,从而无需侦听表单上的任何事件。这是为了方便您读取所有内容,但一定要编写清理代码,因为这会将所有上传的文件写入磁盘,即使是您可能不感兴趣的文件。

您需要在每次请求后清理磁盘上的文件,否则这些文件将会累积。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40367916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档