我有一个Cordova应用程序,该应用程序使用C#webService与SQL数据库进行通信。 这很好。 我的问题是我在服务器上有一些pdf文档,数据库中保存了本地filePath,我需要在应用程序中打开这些文档。
在文件具有可以访问它们的URL之前,我已经做过类似的事情,因此可以打开它们,但是在这种情况下,没有外部访问文件的权限。
所以我的问题是...。如何最好地将文件从服务器获取到应用程序以打开它?
我不需要将文件存储在设备上,只需打开它即可读取文件。
如果有人能引导我朝正确的方向前进,我将不胜感激,因为我不知道这是实现我所追求的最佳方法。
***** UPDATE ******
对,我不认为我不在100万英里之外,但有一种感觉,我在做一些根本错误的事情。
我正在使用以下方法创建一个字节[]:
byte[] bytes = System.IO.File.ReadAllBytes(filepath);
会产生一个很长的字符串。
在应用程序中,我得到了该字符串,并使用以下内容将其重构为文件:
var bytes = new Uint8Array(data);
saveByteArray("mytest.txt", data);
function base64ToArrayBuffer(base64) {
var binaryString = window.atob(base64);
var binaryLen = binaryString.length;
var bytes = new Uint8Array(binaryLen);
for (var i = 0; i < binaryLen; i++) {
var ascii = binaryString.charCodeAt(i);
bytes[i] = ascii;
}
return bytes;
}
function saveByteArray(reportName, byte) {
var blob = new Blob([byte], {type: "application/txt"});
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
var fileName = reportName;
link.download = fileName;
link.click();
}
这将创建一个空文件或一个损坏的文件。
有人可以帮忙吗? 我们将不胜感激。
谢谢
答案 0 :(得分:0)
您可以做的是在C#Web服务后端中创建一个新端点,从该端点下载文件,将其存储在本地,并从您的应用程序中显示它。
在端点的后面,它将使用数据库中的文件位置,并且它将从存储pdf的流中获取文件内容。该数据流将作为字节数组放置在json结果对象中。最后,您的应用程序必须获取此json对象,然后根据字节数组和文件名来构建pdf文件。
希望对您有所帮助。