我正在尝试使用AngularJS从我的PHP Api下载Word docx文档,但是每当我尝试这样做时,我最终都会遇到Word无法读取的损坏文件。
这是我的角度代码:
$http({
method: 'POST',
url: 'gen/gen_dup.php',
data: data,
transformRequest: $httpParamSerializer,
responseType: 'arraybuffer',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(function successCallback(response) {
console.log('Duplicata MB OK', response);
var file = new Blob([response], { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' });
saveAs(file, 'filename.docx');
}, function errorCallback(response) {
console.log('error', response);
});
};
我的PHP页面代码(我使用TinyButStrong生成文档):
<?php
include_once('tbs_class.php');
include_once('tbs_plugin_opentbs.php');
$TBS = new clsTinyButStrong;
$TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN);
$type = $_POST["type"];
if ($type == "1") {
$TBS->LoadTemplate('templates/duplicata.docx');
} else {
$TBS->LoadTemplate('templates/scompte.docx');
}
$title = $_POST["title"];
$name = $_POST["name"];
$address = $_POST["address"];
$reference = $_POST["reference"];
$tmp = $_POST["collector"];
$collector = $collectors[$tmp];
$mcollector = $mcollectors[$tmp];
$TBS->Show(OPENTBS_DOWNLOAD);
?>
这是我从PHP收到的:
哪个是我的docx文件,但是当我尝试下载时,它已损坏。难道我做错了什么 ?顺便说一句,当我通过常规HTML表单将数据发送到PHP页面(并因此转到此页面)时,下载会自动开始,文件也很完美。有什么建议吗?感谢。
答案 0 :(得分:0)
如果可以帮助其他人,我想出来了,问题是我的PHP文件中的一些代码产生了一些警告,而那些警告以某种方式破坏了我正在下载的文件。除了Word文档数据之外的其他任何东西都解决了这个问题。