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”。没有问题。这就是我将文件名称更改为所需名称的地方。

4

1 回答 1

0

第一次打电话时,move_uploaded_file()您将该文件从临时文件夹移至$workDir. 之后,上传的文件不再存在于临时目录中。

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

// moves file from workdir to final destination
rename($workDir."/".$tmpName, $_POST['filetype'].'/'.$rightname); 
于 2013-07-16T13:08:19.957 回答