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