我正在为客户制作统计报表,我选择HTML解决方案作为报表模板。
我有这个问题,我希望用户能够编辑html文档的文本框和save它(当他离开该区域或点击保存按钮时)注释诸如图形之类的东西。
每次打印他打开.html文件。此外,报告中可能有多个html页面(每个子html一个可编辑框)。页就够了)
此外,一个大的约束这里是这个html文件在本地打开并且应该在用户之间共享(我现在必须坚持这个全客户端解决方案,但我计划在服务器端做它)。
正如你可能已经理解的那样,我不能使用localStorage解决方案,因为它是系统/用户依赖的,如果人们共享报告,数据就不会粘住。
我宁愿去一个解决方案,它可以保存在$UID$UID对于每个子页面,人们想要注释和检索它,所以只要可编辑内容的状态保存在报告文件夹架构中的同一位置,当其他人得到这个编辑过的报告时,它将被打开。
感谢您的宝贵时间!
a .
编辑
我应该规定一些事情:
1-报告由数百个独立的html文件组成。它是由经典web浏览器翻译的基本html和javascript组件,而不需要internet连接或本地主机服务器。
2-文件夹结构:
root_folder
|
|---- index.html (main page to access all sub pages)
|---- graphics
|---- graphic1.html
|---- graphic2.html
3-人们需要自己分享报告,没有用户数据库。唯一的限制是,在对可编辑内容框执行修改后,文本应该写入文件夹结构中的某个地方(见2),并在下次某个用户(无论是原始编辑器还是其他计算机上的下一个编辑器,只要第一个编辑器与自己的编辑共享整个目录)打开(或刷新)html文件时自动检索。
我知道有更好的解决方案,但我现在真的必须坚持一个独立的解决方案,希望有一个解决这个问题的办法!
再次感谢您的宝贵时间。
如果没有服务器端组件,并且您不想使用浏览器的(沙盒)本地存储(LocalStorage, IndexedDb或其他),那么您将留下FileReader
来读取数据并创建Blob
url来下载数据。
用户体验应该是这样的:
- 用户打开你的(local) .html文件
- 使用
<input type="file">
提示打开数据库(可以是文本文件)。 你使用FileReader api来加载这个文件。注意:您不能使用 - 当用户完成输入他们的内容时,将其存储在Blob对象中,然后与
createObjectURL
创建data:
链接。您可以将生成的url放在<a href="..." download>Save</a>
链接中。
fetch
或XMLHttpRequest
自动执行此操作。这取决于您的用户是否选择了正确的数据库文件并将它们保存在正确的文件名下,所以这并不理想。我强烈推荐(自)托管解决方案。这样可以更好地处理多个并发用户。
服务器端组件并不一定要复杂:如果你从一门你熟悉的语言开始,并使用SQLite数据库,你将在一个比你所描述的更简单的设置中走得更远。