如何将上传的文件从临时目录移动到永久目录中新创建的文件夹

Posted

技术标签:

【中文标题】如何将上传的文件从临时目录移动到永久目录中新创建的文件夹【英文标题】:How to move uploaded file from temporary directory to a newly created folder inside a permanent directory 【发布时间】:2013-12-26 05:30:26 【问题描述】:

以下脚本上传成功,并将文件移动到永久目录。

我正在父永久目录中创建一个名称为配置文件 ID 的新文件夹,以便所有上传的文件都可以位于具有配置文件名称的文件夹中,并且在父文件夹中创建新文件夹.

问题:当文件被移动时,它被移动到父文件夹,而不是新创建的文件夹。

php 上传脚本。

<?php
define("UPLOAD_DIR", "images/$Pid");
if (!file_exists(UPLOAD_DIR))
    mkdir(UPLOAD_DIR, 0777, true);
    
if (!empty($_FILES["imageUpload"]))
    $myFile = $_FILES["imageUpload"];

    if ($myFile["error"] !== UPLOAD_ERR_OK) 
        echo "<p>An error occurred.</p>";
        exit;
    
    $name = preg_replace("/[^A-Z0-9._-]/i", "_", $myFile["name"]);

    $i = 0;
    $parts = pathinfo($name);
    while (file_exists(UPLOAD_DIR . $name)) 
        $i++;
        $name = $parts["filename"] . "-" . $i . "." . $parts["extension"];
    

    $success = move_uploaded_file($myFile["tmp_name"],
        UPLOAD_DIR . $name);
    if (!$success)  
        echo "<p>Unable to save file.</p>";
        exit;
     else 
        $imageDir = UPLOAD_DIR .'/'. $_FILES["imageUpload"]["name"];
        echo $imageDir;
    
    chmod(UPLOAD_DIR . $name, 0644);


?>

谢谢。

【问题讨论】:

我认为你在这段代码中有错误。define("UPLOAD_DIR", "images/$Pid");改成这个define("UPLOAD_DIR", "images/".$Pid."/"); 【参考方案1】:

改变

$success = move_uploaded_file($myFile["tmp_name"],
    UPLOAD_DIR . $name);

$success = move_uploaded_file($myFile["tmp_name"],
    UPLOAD_DIR . '/'.$name);

【讨论】:

以上是关于如何将上传的文件从临时目录移动到永久目录中新创建的文件夹的主要内容,如果未能解决你的问题,请参考以下文章

DOS批处理器移动指定数量文件到一个临时文件夹,上传到linux服务器,并删除临时文件夹下的文件

文件下载与上传

将spring mvc中的图像永久上传到其他位置

在使用 PHP 上传到临时目录之前检查图像的文件大小

Spark_临时创建原因

如何删除特定用户上传的文件