繁体   English   中英

查找用于解析Excel文件的相对文件路径

[英]Finding a Relative File Path to Parse an Excel File

我正在使用Node.JS构建一个Web应用程序,至少应允许用户上传excel电子表格(.xlsx),然后使用excel解析器(当前使用node-xlsx- https: //www.npmjs.org / package / node-xlsx ),我希望能够找到此文件,对其进行解析并将其内容打印到控制台。 到目前为止,我已经上传并存储了文件,但是在指定应用程序应向下搜索的文件路径时遇到了麻烦。

我相信我的麻烦是我正在尝试在服务器端执行此操作,并且我告诉我的应用在该文件无权访问时在用户目录中搜索该文件。

这是示例代码:

var fullfile;
app.post('/upload', function (request, response) {
var fstream;
request.pipe(request.busboy);
request.busboy.on('file', function (fieldname, file, filename) {
    console.log('Uploading: ' + filename);
    fstream = fs.createWriteStream('./storedFiles/' + filename);
    file.pipe(fstream);
    fstream.on('close', function () {
        response.redirect('success');
        console.log('Uploaded to ' + fstream.path);
        fullfile=fstream.name;
        var obj = xlsx.parse(__dirname + fullfile);
        console.log(obj);
       });
   });
});

产生错误:

返回binding.open(pathmodule._makelong(path)stringtoflags(flags)模式)错误:ENOENT,没有这样的文件或目录'C \\ Users(我的本地计算机上的文件路径)

谁能指出我所缺少的做到这一点的方法? 这与我感觉到的fs方法有关。

谢谢

首先,在保存文件时不要使用用户提供的文件名-您将得到重复的文件,这可能会带来安全风险(通常,永远不要信任用户提供的数据)。 只需使用您自己的值即可-使用您自己的命名约定来防止重复或使用操作系统提供的tmp文件是更标准的选择。

要解决您的问题,请尝试:

在文件顶部要求path

var path = require('path');

并将fullfile的值更改为:

fullfile = path.join(__dirname,fstream.path)

然后将fullfile xlsx.parse传递给xlsx.parse

var obj = xlsx.parse(fullfile);  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM