PHP上传文件名

时间:2010-05-15 02:01:25

标签: php file upload

我想让我的PHP脚本在我选择的目录中上传一个带有特定文件名的文件。然而,问题是我需要它在上传后立即存在,所以我可以在我的服务器上监视它。我不想使用PHP扩展或其他东西 - 这应该很容易转移到任何PHP设置。

所以基本上:有没有办法保证,从文件上传过程的一开始,文件在服务器上有一定的名称和位置?

5 个答案:

答案 0 :(得分:3)

不是我知道的。

PHP将使用php.ini定义的tmp文件夹来存储上传,直到您使用move_uploaded_file()将它们复制到正确的位置。因此,很容易知道它的位置,但文件名是随机的,我认为你不能定义它。 如果您不打算进行多个并发上传(例如,如果您只是要上传文件而且您知道不会同时上传2个文件),则可以检查tmp目录中的最新上传文件

监控上传的常见解决方案是apc.rfc1867

答案 1 :(得分:1)

我知道三个选项:

  1. RFC1867(如其他人所述)允许您使用ajax
  2. 轮询上传进度
  3. 基于Flash的上传器,例如SWFUpload,允许您使用JavaScript
  4. 轮询上传进度
  5. 创建一个监听端口80的PHP命令行守护程​​序,该守护程序接受文件上载,并使用共享内存(或其他一些机制)来传递上载进度。希望我能找到这个链接,但是我读了一篇关于允许用户上传iTunes资料库XML文件的网站的精彩文章,并且它在上传时由服务器实时处理。非常酷,但显然比以前的选项更复杂。
  6. 过去我在SWFUpload方面运气不错。

答案 2 :(得分:0)

我认为您不能配置名称,因为它将是临时文件夹中的随机名称。您应该可以更改目录,但我似乎无法在Google找到答案(请查看php.ini)。

答案 3 :(得分:0)

据我所知,PHP无法实现这一点,因为文件上传请求会在一个请求中将整个文件提交给系统。因此,在收到整个请求之前,PHP服务器无法知道发生了什么。

答案 4 :(得分:0)

没有办法仅使用PHP监控文件上传进度,因为PHP在上传过程中不会调度进度事件。即使Flash通过PHP脚本上传,也可以使用Flash上​​传器。 Flash在上载期间轮询服务器上的临时文件以分发进度事件。一些像YUI这样的javascript框架使用SWF来管理上传。查看YUI的Uploader小部件。

http://developer.yahoo.com/yui/uploader/