2014-06-22 23 views
2

我正在尝试o为我的作品制作应用程序(将仅用于我的办公室),除此之外,我需要下载文件的方式(它将始终是一个ODT和一个txt文档,通过用户点击按钮启动,在特定页面 - 标准下载)从我们的本地服务器启动。这两个文件是在服务器上创建的,然后发送给下载给请求它的用户,所以这部分很简单,就像任何其他提供你下载的网页一样。谷歌浏览器扩展程序 - 下载,移动和删除文件

但下载结束之后,我需要以某种方式:

1)自动打开ODT(OpenOffice的作家)的文件,所以用户可以继续编辑。接下来会发生什么并不重要...

2)自动将TXT文件移动到用户磁盘上的特定文件夹(这是必需的,因为该特定文件夹由我们的特殊打印机监视,并且每当打印机自动检测到该文件夹​​中的文件时开始打印)。将默认Chrome浏览器下载文件夹设置为该监视文件夹不是选项 - 所以我需要在下载到该监视文件夹后自动移动TXT文件。

3)前两个动作完成后,我需要清除默认的下载文件夹(默认情况下,铬下载foldere),因为它会充满这些文件,他们不再需要。

现在,如果我可以用javascript完成它,那将是非常棒的,但是因为我知道没有办法在本地系统上操作文件而不显示对话框给用户 - 所以这不是选项。

我明白,这部分可以通过铬扩展完成,这是可接受的解决方案,因为这个应用程序将只用在我的办公室。但我不知道如何以及如果真的有可能完成我想要的,所以我需要你的帮助。

P.S. 重要的是,用户点击页面上的“Download”下载ODT和TXT文件后,浏览器没有其他窗口,对话框和其他“问题”,但之后的所有内容都应该自动进行。

谢谢!

+0

Javascript无法执行此操作(出于安全原因),因此您需要查看NaCl [Native Client](https://developer.chrome.com/native-client)和[Native Messaging](https:/ /developer.chrome.com/extensions/messaging#native-messaging)。 – David

+0

谢谢大卫,但是有可能使用谷歌浏览器扩展,它会为我做这种文件操作(例如扩展监视器下载,当检测到目标文件时,它会根据我的需要进行操作)。我知道google chrome有chrome fileSystem和downlod API,但不知道是否以及如何将它用于我的情况,以及是否可以在没有任何额外的对话和输入的情况下使用。 – AT8500

+0

@David查看我的答案 - 有可能通过'chrome.downloads'以有限的方式完成此操作API – Xan

回答

1

是的,只要您可以接受下载文件夹的子文件夹作为打印机的目标,您就可以使用chrome.downloads API,完成这些任务。恐怕,你无法下载任意文件夹。

  1. chrome.downloads.download结束开始下载后,可以启动与chrome.downloads.open(downloadId)打开它。 printout/file.txt

  2. 您可以通过向chrome.downloads.download相对路径(注意/斜杠,而不是\)启动下载到子文件夹。

  3. 您可以记住下载ID,然后用chrome.downloads.removeFile(downloadId)进行清理。

请注意您需要添加的权限,它们对于此API非常细化。

+0

在他的问题中,在编号2下他说:“将默认Chrome下载文件夹设置为该监视文件夹不是选项” – David

+0

@David这是可以理解的 - 你无法监控整个Downloads文件夹。一个特定的子文件夹,除非特别这样做 - 这是可行的。 – Xan

+0

与子文件夹好解决方案可以工作,但我担心用户可能会意外删除该文件夹,并且可能会导致很多打印机问题。如果发生这种情况,当我不在办公室时,整个业务都会停止,因此风险太大。 但是,有没有其他的解决方案,你们可以想到它不一定是铬扩展。也许可以使用其他类似java applet或VB之类的东西。不是我熟悉他们,但我认为我可以解决一些问题,因为它非常简单,我需要 – AT8500