Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Impossibile caricare foto

    Salve a tutti.
    Premetto che il seguente codice è funzionante quando lo testo sul mysql di altervista.
    Esso mi permette di caricare un file su una cartella 'utentiimmages' e popolare il campo 'fileupload' nel database con la stringa che rappresenta il percorso del file.



    Codice PHP:
    .....

    $error "false";

    // Array del file inviato

    #$fileupload_temp = $_FILES['fileupload']['tmp_name'];
    /*$nome_file = $_FILES['file']['name'];
    $size_file = $_FILES['file']['size'];
    $type_file = $_FILES['file']['type'];
    $error_file = $_FILES['file']['error'];*/

    $nome_file $HTTP_POST_FILES['file']['name']; 
    $size_file $HTTP_POST_FILES['file']['size'];
    $type_file $HTTP_POST_FILES['file']['type'];
    $error_file $HTTP_POST_FILES['file']['error'];



    // Tipo di estenzioni consentite

    $MAX_FILE_SIZE "250000";
    $allowed_ext = array("jpg,jpeg,gif");
    $allowed_types = array("image/x-png","image/pjpeg","image/jpeg","image/gif");

    // Destinazione file da caricare sul server
    $target_path"utentiimmages/".$nome_file


        if (
    $nome_file!=""){
        
      if (
    $size_file $MAX_FILE_SIZE) { // Controllo la dimensione del file
        
    $msg "File troppo grande";
        echo 
    "$msg";
        
    $error "true";
    }elseif (!
    in_array($type_file$allowed_types)) { // Controllo l'estenzione del file
        
    $msg "Il file selezionato non é nella lista dei file consentiti";
        echo 
    "$msg";
        
    $error "true";
    }
    }
    if (
    $error == "false" or $nome_file==""){


    $sql="INSERT INTO Ricetta (IdAutore,TitoloRicetta,ModalitaPreparazione,NumeroPorzioni,CaloriePorzioni,Tipologia,LivelloDifficolta,TempoCottura,fileupload) 
    VALUES ('
    $flag','$TitoloRicetta','$ModalitaPreparazione','$NumeroPorzioni','$CaloriePorzioni','$Tipologia','$Difficolta','$Tempo','$target_path' )";

    copy($HTTP_POST_FILES['file']['tmp_name'], $target_path);

    ...... 
    Quando eseguo lo stesso codice su un altro spazio web che non sia altervista, non carica il file, nè popola il campo fileupload con la stringa del percorso di quest'ultimo.

    Come posso risolvere?
    Grazie.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Un po' di cose sul codice

    1)
    Questo
    $msg = "File troppo grande";
    echo "$msg";

    perché non lo scrivi semplicemente così?
    echo "File troppo grande";

    Stessa cosa per il messaggio seguente, che te ne fai di usare una variabile?

    2)
    if ($error == "false" or $nome_file=="")
    E' veamente osceno, in caso non ci sia un file il codice ne controlla comunque la correttezza lavorando per niente... non c'è un file da controllare.

    Prima di $MAX_FILE_SIZE metti
    if($_FILES['file']['name'] != "") {

    e chiudi l'if dove necessario, non avendo tutto il codice non lo so dove va chiuso, in questo modo puoi togliere il tuo controllo e risparmiare allo script di fare lavoro inutile, si farà tutto ciò che serve per l'upload, solo se c'è un file.

    3)
    Usa $_FILES e non $_HTTP_POST_FILES

    4)
    Le assegnazioni $nome_file = $_FILES['file']['...'] e seguenti non servono, puoi usare direttamente le variabili $_FILES, come fai tu è solo uno spreco di memoria.

    5)
    Controlla l'avvenuto upload con is_uploaded_file() e invece di copy() usa move_uploaded_file()


    Per quanto riguarda il problema della query:
    Verifica che mysql_query() ritorni true o false, se ritorna false metti un
    echo mysql_error();

    per quanto riguarda l'upload del file:
    dopo aver verificato l'upload con is_uploaded_file() fatti stampare un messaggio d'errore se ritorna false, così si capisce se proprio non viene caricato o se il problme nasce dopo
    A move_uploaded_file() non metterci la @ davanti, così se va in errore te lo dice.

  3. #3
    funge

    era un problema di permessi alla cartella

    scoperto grazie alle tue dritte scrivendo questa parte qui

    Codice PHP:
    ....

    if(@
    is_uploaded_file($_FILES["file"]["tmp_name"])) {

    move_uploaded_file($_FILES["file"]["tmp_name"], "$target_path")
    or die(
    "Impossibile spostare il file, controlla l'esistenza o i permessi della directory dove fare l'upload.");

    } else {

    die(
    "Problemi nell'upload del file " $_FILES["file"]["name"]);

    }

    echo 
    "L'upload del file " $_FILES["file"]["name"] . " è avvenuto correttamente";

    .... 

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.