Así que tengo la carga de un archivo porción en mi sitio web, donde el usuario puede subir cualquier doc o docx carpeta. Heres mi código html:

<form action="upload_file.php" method="post" enctype="multipart/form-data">
    Select a file: <input type="file" name="upload">
<input type="submit">

Y aquí está el código para upload_file.php:

<?php
    session_start();
    $allowedExts = array("doc", "docx");
    $extension = end(explode(".", $_FILES["upload"]["name"]));

    if (($_FILES["upload"]["size"] < 200000)
    && in_array($extension, $allowedExts)) {
        if ($_FILES["upload"]["error"] > 0)
        {
            echo "Return Code: " . $_FILES["upload"]["error"] . "<br />";
        }
        else
        {
            echo "Upload: " . $_FILES["upload"]["name"] . "<br />";
            echo "Type: " . $_FILES["upload"]["type"] . "<br />";
            echo "Size: " . ($_FILES["upload"]["size"] / 1024) . " Kb<br />";
            echo "Temp file: " . $_FILES["upload"]["tmp_name"] . "<br />";

            if (file_exists("Proposals/".$_SESSION["FirstName"] ."/" . $_FILES["upload"]["name"]))
            {
                echo $_FILES["upload"]["name"] . " already exists. ";
            }
            else
            {
                move_uploaded_file($_FILES["upload"]["tmp_name"],
                "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"]);
                echo "Stored in: " . "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"];
            }
        }
    } else {
        echo "Invalid file";
    }
?>

Pero esto no subir nada aunque respondió con un mensaje de éxito. Estoy pensando que es porque no me deja crear un directorio. ¿Hay algo malo con el código anterior o tengo que añadir algo más de código para hacer que crear un directorio. Aquí mi estructura de carpetas si ayuda en todo:

PHP File Upload Crear el Directorio

3 Comentarios

  1. 11

    Usted tiene que crear el directorio que usted está tratando de mover el archivo, no se obtiene automáticamente creado por move_uploaded_file.

    Utilizar el comando mkdir(), http://php.net/mkdir, para crear el directorio y, a continuación, mover el archivo.

    He aquí un final alternativo a la secuencia de comandos, lo que debe hacer

    //Create directory if it does not exist
    if(!is_dir("Proposals/". $_SESSION["FirstName"] ."/")) {
        mkdir("Proposals/". $_SESSION["FirstName"] ."/");
    }
    
    //Move the uploaded file
    move_uploaded_file($_FILES["upload"]["tmp_name"], "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"]);
    
    //Output location
    echo "Stored in: " . "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"];
    • Este código es un gran punto de partida (el manejo de errores se deja para el lector, por supuesto).La única mejora que yo sugeriría sería el uso de la constante DIRECTORY_SEPARATOR en lugar de codificar la «/»
  2. 2

    Usted necesita para comprobar si el directorio ya existe, y si no, lo crea.

    if (!file_exists("Proposals/". $_SESSION["FirstName"])) {
          mkdir("Proposals/". $_SESSION["FirstName"]);
    }
  3. 0

    Que se sube el archivo a un directorio que no existe hay que crearla primero, su upload_file.php debe ser como

    <?php
    session_start();
    $allowedExts = array("doc", "docx");
    $extension = end(explode(".", $_FILES["upload"]["name"]));
    if (($_FILES["upload"]["size"] < 200000)
    && in_array($extension, $allowedExts)) {
    if ($_FILES["upload"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["upload"]["error"] . "<br />";
    }
    else
    {
    echo "Upload: " . $_FILES["upload"]["name"] . "<br />";
    echo "Type: " . $_FILES["upload"]["type"] . "<br />";
    echo "Size: " . ($_FILES["upload"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["upload"]["tmp_name"] . "<br />";
    if (file_exists("Proposals/".$_SESSION["FirstName"] ."/" . $_FILES["upload"]["name"]))
    {
    echo $_FILES["upload"]["name"] . " already exists. ";
    }
    else
    {
    //Check if directory exists if not create it 
    if(!is_dir("Proposals/". $_SESSION["FirstName"] ."/")) {
    mkdir("Proposals/". $_SESSION["FirstName"] ."/");
    }
    move_uploaded_file($_FILES["upload"]["tmp_name"],
    "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"]);
    echo "Stored in: " . "Proposals/". $_SESSION["FirstName"] ."/". $_FILES["upload"]["name"];
    }
    }
    } else {
    echo "Invalid file";
    }
    ?>

Dejar respuesta

Please enter your comment!
Please enter your name here