【问题标题】:Can i move file for two folders? Dropzone.js我可以移动两个文件夹的文件吗? Dropzone.js
【发布时间】:2020-01-31 17:02:08
【问题描述】:

我的拖放区表单

<div align="center">
    <button class="btn btn-success" id="add" onclick='add_img()'>Adicionar imagens <i class="lni-check-mark-circle"></i></button>
</div>
<span  id="menos_img"></span>
<span style="display: none;" id="mais_img">
    <div class="m-auto">
        <form action="clients_images_update.php" style="min-height: 0px;" method="POST" class="dropzone">
            <input type="hidden" name="clients_id" value="<?php echo $id; ?>">
            <input type="hidden" name="users_id" value="<?php echo $_SESSION["user"]["id"]; ?>" />
        </form>
        <div align="center">
            <br>
            <button class="btn btn-success" onClick="window.location.reload();">Atualizar <i class="lni-check-mark-circle"></i></button>
            <button class="btn btn-secondary" onClick="cancela();">Cancelar <i class='lni-cross-circle'></i></i></button>
        </div>          
    </div>
</span>

我的上传文件:

if(!empty($_FILES)) {
    $fileName = $_FILES['file']['name'];
    $source_path = $_FILES['file']['tmp_name'];
    $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION);
    $targetFile = $id."_".$fileName;
    //$targetFile   = $id."_".strtotime("now").$fileName;
    $target_path = "img/clients/".$targetFile;

    $array["filename"] = $targetFile;
    $array["main"] = (int)($db->query("SELECT * FROM images WHERE clients_id = :clients_id;", array("clients_id" => $id), false) == 0);
    $array["clients_id"] = $id;


    if(move_uploaded_file($source_path, $target_path)) {
        $db->insert("images", $array);
    }
    $db->insert("log", array("action" => "image", "inserted_on" => date("Y-m-d H:i:s"), "users_id" => $_POST["users_id"], "clients_id" => $id));
}

我想将文件上传到 2 个文件夹。我尝试执行相同的过程,但存储在 2 文件夹中,但上传未完成。我试过了,用上面的代码添加了这段代码摘录,但它没有上传

if(!empty($_FILES)) {
    $fileName = $_FILES['file']['name'];
    $source_path = $_FILES['file']['tmp_name'];
    $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION);
    $targetFile = $id."_".$fileName;
    //$targetFile   = $id."_".strtotime("now").$fileName;
    $target_path = "img/clients/thumbs/".$targetFile;
    if(move_uploaded_file($source_path, $target_path)) {
    }
}

我尝试的完整代码(相对于图片的上传)是这样的:

if (!empty($_FILES)) {
    $fileName = $_FILES['file']['name'];
    $source_path = $_FILES['file']['tmp_name'];
    $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION);
    $targetFile = $id."_".$fileName;
    //$targetFile   = $id."_".strtotime("now").$fileName;
    $target_path = "img/clients/".$targetFile;
    $target_path2 = "img/clients/thumbs/".$targetFile;
    $array["filename"] = $targetFile;
    $array["main"] = (int)($db->query("SELECT * FROM images WHERE clients_id = :clients_id;", array("clients_id" => $id), false) == 0);;
    $array["clients_id"] = $id;


    if (move_uploaded_file($source_path, $target_path)) {
        $db->insert("images", $array);
    }
    image::resize($source_path, "img/clients/thumbs/".$targetFile, 100, 100);
    $db->insert("log", array("action" => "image", "inserted_on" => date("Y-m-d 
H:i:s"), "users_id" => $_POST["users_id"], "clients_id" => $id));    
    if(move_uploaded_file($source_path, $target_path1)) {
        echo "Success";
    }
}

【问题讨论】:

  • move_uploaded_file() 文件从临时文件夹移动到目标文件夹,因此您需要将其从第一个文件夹复制到第二个文件夹。
  • @Triby 你好!我试过了,但是没有用
  • 请编辑您的问题并添加您尝试过的代码,以便我们查看问题所在并帮助您解决问题。
  • @Triby 我已经用完整的代码编辑了问题

标签: javascript php dropzone


【解决方案1】:

首先,让我们看看你做错了什么:

// You're moving the original file right here, this is fine
if(move_uploaded_file($source_path, $target_path)) {
    $db->insert("images", $array);
}

// This won't work, because you're trying to access orginal file (moved already)
image::resize($source_path, "img/clients/thumbs/".$targetFile, 100, 100);
$db->insert("log", array("action" => "image", "inserted_on" => date("Y-m-d 
    H:i:s"), "users_id" => $_POST["users_id"], "clients_id" => $id));    

// Now you're trying to move again the original file
if(move_uploaded_file($source_path, $target_path1)) {
    echo "Success";
}

那么,逻辑就更简单了:

首先:如果有文件,将其移动到目标位置并保持不变

第二种:创建拇指并保存在其对应的文件夹中,不需要复制,因为文件已经存在了

if(!empty($_FILES)) {
    $fileName = $_FILES['file']['name'];
    $source_path = $_FILES['file']['tmp_name'];
    $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION);
    $targetFile = $id."_".$fileName;
    $target_path = "img/clients/".$targetFile;
    $array["filename"] = $targetFile;
    $array["main"] = (int)($db->query("SELECT * FROM images WHERE clients_id = :clients_id;", array("clients_id" => $id), false) == 0);;
    $array["clients_id"] = $id;

    // Move original file
    if(move_uploaded_file($source_path, $target_path)) {
        $db->insert("images", $array);

        // Create thumb only if the file was moved, otherwhise you'll get errors
        // Your source is the file moved, not the one on temp folder
        image::resize($target_path, "img/clients/thumbs/".$targetFile, 100, 100);

        $db->insert("log", array("action" => "image", "inserted_on" => date("Y-m-d 
            H:i:s"), "users_id" => $_POST["users_id"], "clients_id" => $id));    
    }
}

【讨论】:

    猜你喜欢
    • 2013-12-26
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 2019-11-13
    • 2015-03-22
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    相关资源
    最近更新 更多