在form post中传递PHPExcel对象


Pass PHPExcel object in form post

是否有可能将PHP phpexcel对象传递到页面的HTML中,以便我可以将其传递回服务器与表单POST或使用jquery或其他东西的ajax调用?当我生成数据的html表视图时,我创建了这个对象,我希望他们能够点击按钮并将其作为文档下载,如果他们想要的话,但是我希望能够使用我已经创建的对象为他们生成下载文档。

我可以在HTML中将对象传递给客户端,然后将其传递回服务器吗?

在这种情况下,我通常会这样做:

1)在我生成要显示给用户的页面的同时,将信息生成并保存为文档。然后,当他们想要下载它时,我直接链接到我刚刚创建的文件。当它是一个小容量的页面,可能一个人或少数人每天访问一次,并且他们每次使用它时都有很大的可能性下载该文件时,这是合适的。这是我在生成这些类型的文档时经常遇到的情况。只要确保你管理你的文档,这样它们就不会堆积起来,可能是通过在每次生成文档时用最新的文档覆盖现有文档,或者通过删除旧文档。

2)当他们点击下载时,只需用相同的查询重新生成数据。如果查询速度很快,数据变化不大,或者如果他们下载的数据与他们在页面上看到的数据略有更新,那么这是合适的。

3)当为页面生成数据时,将其保存给用户$_SESSION,该用户应该(至少对于大多数对象)对其进行适当的序列化和反序列化,以便将来访问。如果PHPExcel不能很好地处理这个问题,您可能希望创建自己的继承自PHPExcel的类,并使用__sleep()__wakeup()来适当地管理您需要的任何细节,以确保它适当地序列化和反序列化。然后,当您调用下载数据时,您可以使用内存中的数据,就像您刚刚创建它一样。你可能想要主动管理你的用户会话,以确保它不会坐在那里占用一堆内存,每次用户请求一个页面,如果它是一个相当大的数据量。

最后一个选项可能是最"正确"的方法,并且可能适用于大多数场景。序列化的PHP对象不应该存储在HTML表单中以传递回服务器,至少在任何正常情况下都不应该。