我上传的文件在哪里?

时间:2011-08-04 17:41:40

标签: php file-upload

第一个问题,它应该在哪里?

Accordint to php.net

  

默认情况下,文件将存储在服务器的默认临时文件中   目录,除非已经给出了另一个位置   php.ini中的upload_tmp_dir指令。服务器的默认目录   可以通过在中设置环境变量TMPDIR来更改   PHP运行的环境

所以我转到我的php.ini文件并找到

  

upload_tmp_dir =" \ xampplite \ tmp"

让我继续发布xhtml代码:

          <div class="t2_c2">
            <form name="f9" enctype="multipart/form-data" action="pi5.php" method="POST">
            <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
            <input name="ufile" type="file" class="te7" />
            </form>
          </div>

这是表格内的一个表格。

最后但并非最不重要的是提交此表单的javascript。

document.f9.submit();

因为在temp目录中有很多文件似乎不是我的文件,所以我添加了一些调试php代码来查看$ _FILES超全局关联数组。

代码

print_r($_FILES['ufile']);

返回此信息。

  

数组([name] =&gt; c0.css [type] =&gt; text / css [tmp_name] =&gt;   F:\ xampplite \ tmp \ php317C.tmp [error] =&gt; 0 [size] =&gt; 10652)文件   c0.css

在第二次生产中生产

  

数组([name] =&gt; here.gif [type] =&gt; image / gif [tmp_name] =&gt;   C:\ Users \ a \ AppData \ Local \ Temp \ phpC256.tmp [error] =&gt; 0 [size] =&gt; 8549   )

我觉得很奇怪,这在php.ini文件中没有指定,并且证明php.net文档无效。

生活看起来很好,直到我去[tmp_name]找到这个:

tmp_name directory

没有档案。

我的计划是更改我的php.ini文件,以便将文件直接下载到我想要的位置,但根据下面的答案,只要php脚本正在运行,该文件就会持续,所以这不会出现选择或最小的选择。这就是为什么我最初没有使用移动功能。

2 个答案:

答案 0 :(得分:3)

tmp_name仅在PHP脚本执行的生命周期内有效,之后文件将被清除。您需要move_uploaded_file()到同一个脚本执行中的永久位置才能保持它。

答案 1 :(得分:1)

您需要移动上传的文件,因为它可能是临时存储的。 http://ca.php.net/manual/en/function.move-uploaded-file.php