我试图上传一个文件,我的前端应用程序使用PHP,后端引擎使用Java。它们都通过PHP_bridge进行通信。
我的第一个操作是,当一个文件被发布到PHP页面时,它将检索它的内容。
$filedata= file_get_contents($tmpUploadedLocation);然后将此信息传递给接受字节数组saveFileContents(byte[] contents)的Java外观。
下面是在PHP中如何将$filedata转换为字节数组。
$bytearrayData = unpack("C*",$filedata);最后调用了Java服务(使用php-java-bridge检索了java服务对象)
$javaService->saveFileContents($bytearrayData);如果文件大小较小,这会很好,但是如果大小增加了2.9MB,我会收到一个错误,因此文件内容不会保存到磁盘上。
Fatal error: Allowed memory size of 134217728 bytes exhausted //This is PHP side error due to unpack我不知道如何做到这一点,上面的方法不准确,请我有几个限制。
上面的组合一切都很好,但现在是关于上传和保存文档的。EJB (应用程序引擎访问点)将用于任何前端应用程序(PHP或通过远程接口(查找)的另一个java应用程序)。
我的问题是如何将PHP中的文件内容发送到Java,在那里它不会破坏任何东西(内存)?
发布于 2014-04-01 14:07:13
与其将文件转换为数组,不如将其作为字符串传递。在PHP中将字符串编码为base64,并在Java中将其解码为数组。
另一种选择是通过文件系统传递文件。有些Linux系统将/dev/shm或/run/shm安装到tmpfs,这通常是在程序之间传递临时数据而不引起硬盘开销的好方法。一个典型的tmpfs算法是: 1)创建文件夹;2)从其中删除旧文件(例如,旧文件超过1分钟);3)保存新文件;4)将文件路径传递给Java;5)删除文件。如果步骤3-5由于某种原因没有完成,那么步骤2是非常重要的,这样就不会浪费RAM。
https://stackoverflow.com/questions/22219545
复制相似问题