Dropzone.js-上传文件夹结构和单个文件


Dropzone.js - upload folder structures and single files

我目前正在使用来自"nuhil"的结构化文件夹上传器,以使dropzone.js可以上传文件夹/完整的文件夹结构。

无论文件夹中有多少文件夹,上传文件夹都很有效,等等。但当我试图上传一个文件时,它根本不起作用。

这是我用来上传的代码:

<?php
session_start();
$ds = DIRECTORY_SEPARATOR;
$storeFolder = '../uploads/'.$_SESSION['userid'].'/';
if (!is_dir($storeFolder)) {
    mkdir($storeFolder);
}
if (!empty($_FILES)) {
    $tempFile = $_FILES['file']['tmp_name'];
    $targetPath = dirname( __FILE__ ) . $ds . $storeFolder . $ds;
    $fullPath = $storeFolder.rtrim($_POST['path'], "/.");
    $folder = substr($fullPath, 0, strrpos($fullPath, "/"));
    if (!is_dir($folder)) {
        $old = umask(0);
        mkdir($folder, 0777, true);
        umask($old);
    }
    if (move_uploaded_file($tempFile, $fullPath)) {
        die();
    } else {
        die('e');
    }
}
?>

我想我也知道问题是什么,因为我试图上传的文件总是被称为undefined,并且是不可打开的,它似乎也试图为单个文件创建一个文件夹,但由于没有,它只是试图创建一个没有值的文件夹(见第mkdir($folder, 0777, true);行)。所以我知道问题出在哪里,但我不知道如何让它发挥作用。有人知道该怎么办吗,单个文件也能正常工作?

因为当你尝试上传单个文件时,"file.fullPath"是未定义的,你可以通过检查未定义来尝试file.name。

this.on("sending", function(file) {
        var name = file.fullPath;
        if (typeof (file.fullPath) === "undefined") {
            name = file.name;
        }
$("#tmp-path").html('<input type="hidden" name="path" value="'+name+'" />')
});