编程语言
首页 > 编程语言> > PHP使用Zend_Form接收文件作为字节数组

PHP使用Zend_Form接收文件作为字节数组

作者:互联网

我们在PHP应用程序中使用Zend_Form来构建输入文件html元素.我们可以设置此元素的“目标”,并且在调用receive()时,文件将保存到指定位置.

我们希望根本不将文件保存到光盘,而是将文件抓取为字节数组并对其进行其他处理.

这可能吗?如果Zend_Form()无法实现,是否可以通过其他方式完成?

编辑:我们之所以无法写入磁盘,是因为该应用程序在Azure上运行,并且它似乎没有任何写访问权限,即使在temp文件夹中也是如此.我们从Zend那里得到一个例外,说“给定的目标不可写”.

解决方法:

无论是否使用Zend,所有PHP上传文件都将写入文件系统(请参阅upload_tmp_dirPOST method uploads).

Files will, by default be stored in the server’s default temporary
directory, unless another location has been given with the
upload_tmp_dir directive in php.ini.

您可以尝试使用$_FILES数组直接访问该文件,而不是使用接收来处理上载,这将使您可以使用file_get_contents()或类似函数将文件读取为字符串.但是,您仍然可以大体上使用Zend_Form创建和处理该表单.

您可以设置共享内存upload_tmp_dir以将文件系统映射到保存上载文件的内存.请谨慎对待,好像有人试图上传一个非常大的文件,它将进入内存,这可能会影响性能或您的服务成本.

最终,Zend_File_Transfer_Adapter_Http :: receive()调用move_uploaded_file()将文件从其临时位置移动到永久位置.另外,它可以确保上传有效并对其进行过滤,并将其标记为已接收,因此无法再次移动(否则将失败).

标签:file,upload,zend-form,zend-framework,php
来源: https://codeday.me/bug/20191201/2082091.html