我需要点击一个API端点,它返回一个pdf文件(不是pdf的url,而是实际的数据),然后以某种方式在我的离子应用程序中显示这个pdf。理想情况下,我想将它交给其他应用程序,如手机的移动网络浏览器,但我也愿意尝试将其嵌入我的应用程序中。在iOS上,我只使用$ window.open(url),移动safari知道下载并显示返回的pdf。但是,Android尝试下载该文件然后告诉我,当我尝试打开它时无法打开它。
我还尝试将其嵌入到<embed>
的应用中,但没有嵌入任何内容。但是,类似的方法适用于<img ng-src="url">
中的图像。
我也尝试过使用cordova FileOpener2,但是在使用它时遇到了很多麻烦。如果这是正确的方法,我会愿意重新访问该方法。
我最接近的绝对只是将其发送到设备移动浏览器,因为它在iOS上完美运行。
答案 0 :(得分:2)
我使用filetransfer和fileopener2解决了它。我的代码如下。我遇到的主要问题是我的config.xml文件中没有<access origin="cdvfile://*" />
而没有正确安装ngCordova。
if (ionic.Platform.isIOS())
$window.open(APIUrl, '_blank', 'location=no');
else if (ionic.Platform.isAndroid()) {
var fileExtension = filename.substr(filename.lastIndexOf('.')+1);
//I have a dictionary with this somewhere else
var MIMEType = extToMime[fileExtension];
var uri = encodeURI(APIurl);
var fileURL = "cdvfile://localhost/persistent/file."+fileExtension;
$cordovaFileTransfer.download(uri, fileURL, {}, true)
.then(function(result) {
$cordovaFileOpener2.open(
fileURL,
MIMEType
).then(function() {
console.log("SUCCESS");
}, function(e) {
console.log("ERROR");
console.log(JSON.stringify(e));
});
}, function(e) {
console.log("Error: " + JSON.stringify(e));
});
}