标签:file upload zend-form zend-framework php
我们在PHP应用程序中使用Zend_Form来构建输入文件html元素.我们可以设置此元素的“目标”,并且在调用receive()时,文件将保存到指定位置.
我们希望根本不将文件保存到光盘,而是将文件抓取为字节数组并对其进行其他处理.
这可能吗?如果Zend_Form()无法实现,是否可以通过其他方式完成?
编辑:我们之所以无法写入磁盘,是因为该应用程序在Azure上运行,并且它似乎没有任何写访问权限,即使在temp文件夹中也是如此.我们从Zend那里得到一个例外,说“给定的目标不可写”.
解决方法:
无论是否使用Zend,所有PHP上传文件都将写入文件系统(请参阅upload_tmp_dir和POST 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 inphp.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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。