Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用HTML输入文件导入excel文件并读取Node.js中的文件内容(如何将完整路径发送到Node.js)_Javascript_Node.js_Angularjs_Import_Html Input - Fatal编程技术网

Javascript 如何使用HTML输入文件导入excel文件并读取Node.js中的文件内容(如何将完整路径发送到Node.js)

Javascript 如何使用HTML输入文件导入excel文件并读取Node.js中的文件内容(如何将完整路径发送到Node.js),javascript,node.js,angularjs,import,html-input,Javascript,Node.js,Angularjs,Import,Html Input,关于使用HTML、AngularJS和Node.js读取文件,我有点困惑。因为我有点困惑,我希望有人能用这个来指导我 我正在尝试使用HTML和Angularjs导入一个文件,它工作正常。我可以导入一个文件,但我不确定如何将整个文件发送到Node.js。由于浏览器限制,我无法获取文件的完整路径,因此我只是想知道如果我无法发送完整路径,那么如何访问Node.js中Excel文件的数据 以下是我正在编写的代码: <div class="custom-file">

关于使用HTML、AngularJS和Node.js读取文件,我有点困惑。因为我有点困惑,我希望有人能用这个来指导我

我正在尝试使用HTML和Angularjs导入一个文件,它工作正常。我可以导入一个文件,但我不确定如何将整个文件发送到Node.js。由于浏览器限制,我无法获取文件的完整路径,因此我只是想知道如果我无法发送完整路径,那么如何访问Node.js中Excel文件的数据

以下是我正在编写的代码:

<div class="custom-file">
    <input type="file" fileUploader="uploadFile" class="custom-file-input"></input>
    <label class="custom-file-label" for="inputGroupFile01">{{ FileName }}</label>
</div>
My
index.js
将路由到相应的节点控制文件:

//Read the Excel File Data
app.post('/UploadFIle',function(req,res){
    console.log(req.body);
    ReadExcelFile.ReadExcelFileContent(req.body,function(data){
        console.log("INDEX JS");
        console.log(data);
    });
});
My
Node.js
函数,该函数将从获取的文件中读取数据:

//ReadExcelFile.js

const xlsxFile      =   require('read-excel-file/node');

exports.ReadExcelFileContent    =   function(req,callback){
    
    var fileLocation    =   req.path; //NOT SURE HOW TO ACCESS THE FILEPATH HERE BECAUSE I WANT TO READ THE DATA HERE
    console.log(fileLocation);
}
此外,上传文件后,我试图更改
文件名
的名称,但似乎双向数据绑定不起作用,因为在HTML页面中,它不会显示我刚刚上传的
文件名


您好,我尝试了很多方法将读取文件的路径发送到Node.js,但都没有成功。如何解决此问题?

为什么要发送文件路径?将文件添加到UI中的输入标记后,它将拥有您的文件。然后您希望将该文件发送到
node.js

app.controller('TemplatesController',function($scope){
        
    $scope.FileName     =   "Choose a Excel File";
    
    //Import an Excel File from the Local System
    $scope.uploadFile = function(event){
        var files = event.target.files;
        $scope.FileName = files[0].name;
        console.log($scope.FileName)
        $http({
            url     : "/UploadFIle",
            method  : "post",
            file    : files[0] // send your file
        }).success(function(response) {
            console.log(response);
        });


    };
});
您也可以这样更改文件名

app.controller('TemplatesController',function($scope){
        
    $scope.FileName     =   "Choose a Excel File";
    
    //Import an Excel File from the Local System
    $scope.uploadFile = function(event){
        var files = event.target.files;
        files[0].name = 'xxxxx'  // change file name 
        $scope.FileName = files[0].name;
        console.log($scope.FileName)
        $http({
            url     : "/UploadFIle",
            method  : "post",
            file    : files[0] // send your file
        }).success(function(response) {
            console.log(response);
        });


    };
});

在您可以使用问题中提到的nodejs将该文件保存到任何位置后,您将无法访问操作系统的文件系统,因为浏览器中的JavaScript无法访问该文件系统

我已经找到了解释如何在后端(NodeJS/ExpressJS)和前端(AngularJS)处理文件上传的方法

前端示例使用
ng文件上传
模块


现在,您可以从磁盘中选择一个文件,将其上载并发送到NodeJS服务器,并在multer中间件运行后访问文件数据(本文对此进行了解释)。希望有帮助:)。

因为angular只是在浏览器上运行的JS代码,所以它无法访问文件系统。您需要做的是将文件上传到后端服务器,然后服务器使用类似于
SheetJS
的库解析excel文件,并将文件内容作为JSON返回给客户端

angular code上的方法是
get
(方法:“get”,),您正在等待/侦听node.js中的
post
。检查这是否是问题所在。@Mu Majid感谢您的回复。不,事实上我在尝试一些事情,那时我可能把事情搞砸了。它实际上是
POST
,因为我需要发送file@Mu-Majid你知道怎么做吗?尝试了更多的东西,但没有运气检查我的答案,我附上了一篇文章,一步一步解释后端和前端方面。非常感谢您的回复。我试图发送路径,因为我想读取node.js中的Excel文件数据。我用
file:files[0]//发送您的文件
尝试了
Angularjs Controller
方法,但在这里我只发送文件的
名称,对吗?node.js如何知道它位于何处?同样在
index.js
中,当我尝试
console.log(req.body)
时,我得到了
{}
,这意味着它无法得到任何东西。我是否必须更改
文件
类型的任何内容,因为通常在发送
数据
时,我们可以直接在
节点.js中访问它。我已经编辑了代码,请检查一下。试试这个,然后在node.jsI中尝试使用
$http.post(url,JSON.stringify({file:files[0]}))(函数(response){console.log(response)})
然后是console.log(req.body)。我在
index.js
中得到以下结果:“{file:{}”。只是想确认我们是否必须以angularjs的
文件
数据
发送?
app.controller('TemplatesController',function($scope){
        
    $scope.FileName     =   "Choose a Excel File";
    
    //Import an Excel File from the Local System
    $scope.uploadFile = function(event){
        var files = event.target.files;
        files[0].name = 'xxxxx'  // change file name 
        $scope.FileName = files[0].name;
        console.log($scope.FileName)
        $http({
            url     : "/UploadFIle",
            method  : "post",
            file    : files[0] // send your file
        }).success(function(response) {
            console.log(response);
        });


    };
});