2013-07-16 55 views
0
$tmpName = basename($_FILES['uploadfile']['tmp_name']); 
$rightname = basename($_FILES['uploadfile']['name']); 
move_uploaded_file($_FILES['uploadfile']['tmp_name'], $workDir."/".$tmpName) or die("Cannot move uploaded file to working directory"); 
if(!is_writable($_POST['filetype'])) 
    die('You cannot upload to the specified directory, please CHMOD it to 777.'); 
move_uploaded_file($_FILES['uploadfile']['tmp_name'], $_POST['filetype'].'/'.$rightname) or die("Cannot move uploaded file to destination directory"); 

我有一个表单上传文件并将数据发布到包含上述代码的php脚本。上面的代码部分工作,如第一个'move_uploaded_file'工作,上传的文件从var/tmp文件夹移动到$ workDir文件夹。该文件的名称与服务器在将上载文件放在tmp文件夹上时使用临时名称提供的名称相同,然后再将其移至目标目录。我觉得这是有效的,因为在我提交表单之后,当它将文件放入tmp文件夹时,我不重命名服务器给予文件的临时名称。因为第二个'move_uploaded_file()'与指定的错误一起死亡。该目录是可写的。它被镶嵌成'777'。没有问题。这就是我将文件名称更改为需要的名称。似乎是一个小问题,但我已经花了太多的时间在这没有运气。PHP中的移动加载文件功能将文件移动到临时目录但不移动到目标目录

你叫 move_uploaded_file()

回答

0

你第一次搬离临时文件夹中文件$workDir。之后,上传的文件不再存在于临时目录中。

只需使用rename()功能,该文件从$workDir."/".$tmpName移动到最终目的地。

// moves file from workdir to final destination 
rename($workDir."/".$tmpName, $_POST['filetype'].'/'.$rightname); 
+0

另一方面我不明白为什么这两步的方法是需要的 – mnagel

+0

谢谢:) rename()完美工作。 – Sai

+0

@mnagel是的。我最初是为了测试而保留原样。但现在我摆脱了额外的步骤,它仍然有效。谢谢:)有趣的是,这开始实际上是一个ftp问题。但为了获得上传功能,我不得不放弃ftp路由,因此我保留了部分代码。 – Sai