Visualizzazione risultati 1 fino 9 di 9

Discussione: Semplice Upload PHP

  1. #1
    Guest

    Predefinito Semplice Upload PHP

    Salve ragazzi, ho un piccolo problema, non si tratta altro che di un semplice codice PHP, ma non riesco a capire quale sia il problema...:

    Codice PHP:
    <?php
    $ext
    = substr($_FILES['uploaded']['name'],strrpos($_FILES['uploaded']['name'],"."),strlen($_FILES['uploaded']['name']));
    $cartella = str_replace($ext, '', $_FILES['uploaded']['name']);

    $anno = $_POST['COMBO'];
    if(
    $anno==biennio)
    $target = "./files/bie/";
    if(
    $anno==informatica)
    $target = "./files/info/";
    if(
    $anno==meccanica)
    $target = "./files/mec/";
    if(
    $anno==elettronica)
    $target = "./files/elet/";
    if(
    $anno==matematica)
    $target = "./files/mate/";
    if(
    $anno==italiano)
    $target = "./files/ita/";
    if(
    $anno==sistemi)
    $target = "./files/sys/";

    chdir($target);
    mkdir("$cartella",0777);
    $lollo = $target.$cartella."/";

    $target = $lollo. basename( $_FILES['uploaded']['name']) ;

    if(
    move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
    {
    echo
    "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
    }
    else {
    echo
    "Sorry, there was a problem uploading your file.";
    }
    ?>
    Provando ad uppare però mi dice: "Sorry, there was a problem uploading your file.".

    Non capisco il codice HTML è ok, ma non so perchè non lo uppa...Vi spiego un pò il codice:
    Sostanzialmente il file sarà caricato in una directory a seconda delle scelte del codice html la struttura sarà ad esempio: "./files/bie/esempio/esempio.rar. Quindi, dopo aver estrapolato il nome togliendo l'estensione dal file da uppare creo la cartella e dico di inserire il file da uppare nella cartella appena creata, ma non ci riesco...aiutino???
    Ultima modifica di alemoppo : 28-08-2011 alle ore 18.21.56 Motivo: Meglio usare i tag [php] :)

  2. #2
    Guest

    Predefinito

    io inizierei col farmi stampare $target inserendo un

    Codice PHP:
    echo $target;
    subito dopo

    Codice PHP:
    $target = $lollo. basename( $_FILES['uploaded']['name']) ;

  3. #3
    Guest

    Predefinito

    Ci avevo già pensato e provando ad inserire un immagine ecco il risultato:
    ./files/bie/gradient/gradient.jpg
    Sorry, there was a problem uploading your file.

  4. #4
    Guest

    Predefinito

    Prova a far stampare il codice di UPLOAD_ERR_OK

    Ma la cartella è stata creata?
    Ultima modifica di simpleticket : 28-08-2011 alle ore 18.36.38

  5. #5
    Guest

    Predefinito

    Ecco il risultato:
    ./files/bie/gradient/gradient.jpg
    Sorry, there was a problem uploading your file.
    0

  6. #6
    Guest

    Predefinito

    Il fatto che UPLOAD_ERR_OK sia 0 vuol dire che l'upload è avvenuto senza errori.

    Il fatto che non avvenga lo spostamento del file potrebbe dipendere dalla mancata creazione della cartella oppure dai permessi su di essa.

    Prova a verificare queste cose.

  7. #7
    Guest

    Predefinito

    Dunque mi sono accorto di un piccolo errore. In questa riga:

    Codice PHP:
    if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target))
    terget assume tutto il path compreso il file con estensione, quindi è una cosa che non si può fare, ho perchiò modificato in questo modo:

    Codice PHP:
    <?php
    $ext
    = substr($_FILES['uploaded']['name'],strrpos($_FILES['uploaded']['name'],"."),strlen($_FILES['uploaded']['name']));
    $cartella = str_replace($ext, '', $_FILES['uploaded']['name']);

    $anno = $_POST['COMBO'];
    if(
    $anno==biennio)
    $target = "./files/bie/";
    if(
    $anno==informatica)
    $target = "./files/info/";
    if(
    $anno==meccanica)
    $target = "./files/mec/";
    if(
    $anno==elettronica)
    $target = "./files/elet/";
    if(
    $anno==matematica)
    $target = "./files/mate/";
    if(
    $anno==italiano)
    $target = "./files/ita/";
    if(
    $anno==sistemi)
    $target = "./files/sys/";

    chdir($target);
    mkdir("$cartella",7777);
    $lollo = $target.$cartella."/";

    if(
    move_uploaded_file($_FILES['uploaded']['name'], $lollo))
    {
    echo
    "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded";
    }
    else {
    echo
    "Sorry, there was a problem uploading your file.";
    }
    ?>
    Ma purtroppo non mi uppa il file. Dunque, i permessi li ho settati tutti con:
    Codice PHP:
    mkdir("$cartella",7777);
    Inoltre la cartella la crea, ma non uppa il file.....
    Ultima modifica di andreafallico : 28-08-2011 alle ore 19.26.45

  8. #8
    Guest

    Predefinito

    No, anzi la destinazione deve essere comprensiva del nome file (che può essere anche diverso dal file origine).

    I permessi in fase di creazione li puoi lasciare a 655 (ti sconsiglio di usare la quarta cifra).

    Il problema è in chdir (ti fa perdere il riferimento al file temporaneo uploadato)

    Cambia il codice

    Codice PHP:
    chdir($target);
    mkdir("$cartella",0777);
    in

    Codice PHP:
    mkdir($target.$cartella, 655);

    Mi sorge una domanda: perchè ti serve che che sia files/xxx/nomefile/nomefile.ext?
    (così ogni cartella nomefile avrà sempre e solo un file al suo interno)
    Non ti va bene files/xxx/nomefile.ext?

    Tieni presente che se carichi un file con lo stesso nome di uno già esistente, mkdir ti darà errore
    Ultima modifica di simpleticket : 28-08-2011 alle ore 19.56.08

  9. #9
    Guest

    Predefinito

    Ti spiego, la cartella non conterrà solo un file ma 4-5 e mi serve che il nome della cartella e del file siano uguali, poi gli altri file si genereranno in seguito..

    EDIT---

    Comunque grazie, il problema è stato risolto =D
    Ultima modifica di vittorioemanuele : 28-08-2011 alle ore 20.31.33

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •