使电子应用程序允许从本地文件系统

时间:2017-04-22 00:35:11

标签: angular pdf typescript electron

我正在进行小型任务,我需要制作电子应用程序显示保存文件对话框,并允许用户保存pdf文件(已存储在用户应用程序数据文件夹中)。我的应用程序就像:

  1. 用户从网站下载压缩文件夹(此文件夹包含用户需要的所有数据,如html,内容和pdf)
  2. 用户将压缩文件夹放到电子应用中以查看所有下载的内容
  3. 现在有下载文件按钮模仿从服务器下载文件的操作(但是,为了最佳利用服务器资源,我将所有需要的内容压缩成单个压缩文件夹,用户已下载以防止服务器往返)
  4. 现在我要显示那些本地保存的pdf(用户数据文件夹内)
  5. 我试过window.open('file:/// file-path'),它不起作用。我收到了无法显示文件的错误消息。 (由于安全问题)

1 个答案:

答案 0 :(得分:0)

尝试多种选项后:

  • 使用href指向pdf的相对路径添加锚标记,它不会在eectron中显示pdf内容。的失败
  • 尝试了window.open功能,由于安全问题失败
  • 最后,我了解到所有在电子中打开的文件都保存在users / AppData / Roaming /'应用程序名称'中,而且有趣的是电子应用程序可以访问该位置内的所有内容(因为用户手动删除了那里的文件)。所以我使用fs node package来读取文件并显示保存文件对话框。

E.g。

var app = require('electron'),
    dialog = app.dialog,
    fs = require('fs');

var pdfContent = fs.readFileSync(app.GetPath('UserData'));
dialog.showSaveDialog({ title: 'app'}, pdfContent, function(err){ /*show error*/});
//something like this