0

写真をアップロードしたいときに問題が発生し、存在しない新しいディレクトリを作成すると、フォルダー $gallery_name が作成されず、uploads/galerije/$username/$gallery_name ではなく、uploads/galerije/$username に写真が保存されます。誰でも私を助けることができますか?

$username = $_SESSION['username'];
$gallery_name = $_POST['gallery_name'];

if (isset($_FILES['files'])) {
    $errors = array();
    foreach ( $_FILES['files']['tmp_name'] as $key => $tmp_name ) {
        $file_name = $key . $_FILES['files']['name'][$key];
        $file_size = $_FILES['files']['size'][$key];
        $file_tmp = $_FILES['files']['tmp_name'][$key];
        $file_type = $_FILES['files']['type'][$key];

        if ($file_size > 2097152) {
            $errors[] = 'File size must be less than 2 MB';
        }

        $desired_dir = "uploads/galerije/" . $username . "/" . $gallery_name;

        if (empty($errors)) {
            if (!is_dir($desired_dir)) {
                mkdir($desired_dir, 0777); // Create directory if it does not exist
            }
            if (!is_dir("$desired_dir/" . $file_name) == false) {
                move_uploaded_file($file_tmp, "$desired_dir/" . $file_name);
                header("location: index.php");
            }
        }
        else {
            print_r($errors);
        }
    }
    if (empty($error)) {
        echo "Success";
    }
}
4

3 に答える 3

5

ディレクトリがまだ存在しない場合は、ディレクトリを再帰的に作成するように mkdir() に指示する必要があります。

truemkdir() 関数に渡してみてください:

mkdir($desired_dir, 0777, true); 

PHP ドキュメントでは、mkdir() はデフォルトで再帰的なディレクトリを処理しないと具体的に述べています。5.0.0 以降では、引数を渡して変更することができます。

于 2013-09-30T21:35:27.853 に答える
2

ここで使用してis_dirいます:

if(is_dir("$desired_dir/".$file_name)==false){

を使用する必要がある場合file_exists。多分それはあなたの問題の一部です。

于 2013-09-30T21:36:33.013 に答える