我目前正在使用来自"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+'" />')
});