【发布时间】:2020-11-06 00:15:08
【问题描述】:
我对使用 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>
我的angularjs函数应该获取FILEPATH并将其发送到相应的NODE.JS:
app.directive('fileUploader', function() {
return {
restrict: 'A',
link: function (scope, element, attrs) {
var onChangeHandler = scope.$eval(attrs.fileUploader);
element.on('change', onChangeHandler);
element.on('$destroy', function() {
element.off();
});
}
};
});
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] //PATH OF THE FILE WHICH I AM UNABLE TO GET
}).success(function(response) {
console.log(response);
});
};
});
我的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);
});
});
我的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);
}
此外,在文件上传后,我试图更改 FileName 的名称,但似乎有两种方式数据绑定不起作用,因为在 HTML 页面中它不显示我刚刚上传的 FileName。
再次您好,我尝试了很多方法来将读取文件的路径发送到 Node.js,但它们都不起作用。我该如何解决这个问题?
【问题讨论】:
-
角度代码的方法是
get(方法:“get”,),您正在等待/收听node.js中的post。检查这是不是问题。 -
@Mu-Majid 感谢您的回复。不,实际上我正在尝试一些事情,那时我可能会搞砸这件事。其实是
POST因为我需要发送文件的路径 -
@Mu-Majid 知道如何进行这项工作吗?尝试了更多的东西,但没有运气
-
检查我的答案,我附上了一篇文章,逐步解释了后端和前端。
标签: javascript node.js angularjs import html-input