通过网络服务在Cordova应用中打开pdf文件

时间:2019-05-21 12:45:56

标签: c# file web-services cordova pdf

我有一个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();
        }

这将创建一个空文件或一个损坏的文件。

有人可以帮忙吗? 我们将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

您可以做的是在C#Web服务后端中创建一个新端点,从该端点下载文件,将其存储在本地,并从您的应用程序中显示它。

在端点的后面,它将使用数据库中的文件位置,并且它将从存储pdf的流中获取文件内容。该数据流将作为字节数组放置在json结果对象中。最后,您的应用程序必须获取此json对象,然后根据字节数组和文件名来构建pdf文件。

希望对您有所帮助。