用php直接写入磁盘

时间:2010-05-18 02:48:17

标签: php file-upload upload

我想创建一个不属于php上传限制的上传脚本。 可能有一个场合,我需要上传2GB或更大的文件,我不想将整个服务器执行更改为32MB以上。

有没有办法直接从php写入磁盘?

你建议有人用什么方法来实现这个目标?我已经阅读了堆栈溢出,但还没有找到我想要做的事情。

4 个答案:

答案 0 :(得分:2)

简单的答案是,由于apache处理发布数据的方式,你不能这样做。

如果您坚持要更大的文件上传并仍然使用php作为后端,您可以使用php套接字api编写一个简单的文件上传接收器,并将其作为独立服务运行。在http://devzone.zend.com/article/1086#Heading8

上可以找到一些很好的细节

答案 1 :(得分:2)

虽然这是一篇旧帖子,但在寻找使用PHP处理大文件上传的解决方案时,您可以通过谷歌轻松找到它。 我仍然不确定是否可以上传增加内存限制的文件,但我认为它们很有可能。在寻找这个问题的解决方案时,我发现了矛盾的消息来源。 PHP手册说明

  

post_max_size:设置允许的帖子数据的最大大小。   此设置也会影响文件上载。   要上传大文件,必须使用此值   大于upload_max_filesize。如果   您的内存限制已启用   配置脚本,memory_limit也是   影响文件上传。通常   说来,memory_limit应该是   大于post_max_size。 (http://php.net/manual/en/ini.core.php

...这意味着您的内存限制应该大于您要上传的文件。但是,php.net上的另一个用户(alice-dsl dot com的ragtime)声明:

  

我不相信'memory_size'应该是大小的神话   上传的文件。文件是   绝对没有留在记忆中......   而是上传每个1MB的块   存储在/ var / tmp之后,以后再存储   在转移到/ tmp之前重建   网络/用户空间。

     

我正在运行一个只有64MB的linux-box   RAM,将memory_limit设置为16MB   并上传大小约为的文件   100MB完全没问题! (http://php.net/manual/en/features.file-upload.php

他报告了垃圾收集器的一些其他相关问题,但也说明了如何解决这些问题。如果是这样,上传的文件大小可能会增加内存限制。 (但是,请注意,另一件事可能是处理上传的文件 - 然后您可能需要将其加载到内存中)

在我尝试使用PHP处理大型文件上传之前,我正在写这篇文章,因为我正在使用php或python来评估此任务。

答案 2 :(得分:1)

使用PHP上传大于PHP允许限制的文件是不可能的,就这么简单。

可能的解决方法包括using a client-side technology - like Java,不确定Flash和Javascript是否可以执行此操作 - 以较小的块“拆分”原始文件。

答案 3 :(得分:1)

你可以根据PHP的套接字做一些有趣的事情。您是否考虑过用Java编写applet将文件上传到监听的PHP守护进程?这可能不适用于大多数专业托管服务提供商,但如果您运行自己的服务器,则可以使其正常运行。请考虑以下顺序:

  1. Applet启动,向PHP发送请求以打开侦听套接字
    1. (您可能必须用Java编写基本的Web浏览器才能使其工作)
  2. Java Applet从文件系统中读取文件,并通过步骤1中创建的套接字将其上传到PHP。
  3. 这不是最干净的方法,但是如果你在php.ini文件中禁用PHP脚本超时,那么你可以做一些工作。

相关问题