我在stackoverflow上寻找答案,但没有成功。
我有一个node.js方法在路由中,使用docxtemplater库从另一个模板生成.docx模板。
我向/api/generateReport发送一个来自angularjs的post请求,并生成这个.docx文件,但是我无法进行发送。将文件存放在/public目录中不可推荐也不安全,但如果我将文件放在/public目录中并提供文件路径给AngularJs,我无法下载它。
我已经阅读了关于blob和其他一些东西的内容,但我无法下载.docx文件。
PS:我正在使用$resource指令处理api请求,并将responseType设置为
我会把响应发送这样。
我有一个node.js方法在路由中,使用docxtemplater库从另一个模板生成.docx模板。
我向/api/generateReport发送一个来自angularjs的post请求,并生成这个.docx文件,但是我无法进行发送。将文件存放在/public目录中不可推荐也不安全,但如果我将文件放在/public目录中并提供文件路径给AngularJs,我无法下载它。
我已经阅读了关于blob和其他一些东西的内容,但我无法下载.docx文件。
PS:我正在使用$resource指令处理api请求,并将responseType设置为
arrayBuffer
。
angular.module('MyApp')
.factory('GenerateReport', function($http, $location,$resource, $rootScope, $alert, $window) {
return $resource("/api/GenerateReport/:id",{}, {
'query': {
method: 'GET',
isArray: false
},
responseType: 'arrayBuffer'
});
});
var fileDocx = fs.readFileSync(__base + "/plantillaSalida.docx", "binary");
res.send(fileDocx);
在 Angular 控制器中接收到响应:
GenerateReport.save({
projectExecution: $scope.projectExecution,
auditingProject: $scope.auditingProject,
participants: $scope.participants,
exampleProjects: $scope.exampleProjects
}, function(response) {
/***What to to here??***/
$mdToast.show(
$mdToast.simple()
.content('Informe generado')
.position('bottom right left')
.hideDelay(3000)
);
},
function(error) {
console.log("error");
$mdToast.show(
$mdToast.simple()
.content('Error al general el informe')
.position('bottom right left')
.hideDelay(3000)
);
}
);