Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Upload di un file

  1. #1

    Upload di un file

    Salve a tutti.
    Devo costruire un programma php attraverso il quale, passato come parametro solamente il valore di una input di tipo file, copi quel determinato file nella cartella desiderata del sito (che per ora si trova in locale e come server uso Apache).
    Come controllo vorrei mettere solamente che sia un file immagine (quindi le estensioni jpg,gif,png).
    Non ho idea di come si faccia.
    Ho trovato alcuni script sul web ma quasi del tutto incomprensibili.

    Ringrazio anticipatamente per gli aiuti che spero riceverò.

  2. #2
    non sono sufficientemente esperto per darti consigli... ma ti posto uno script che utilizzo io e che mi funziona. poi prova ad attendere risposte più autorevoli

    Codice PHP:
    <?php

    /*settiamo la cartella in cui fare l'upload*/

    $cartella_upload $_SERVER["DOCUMENT_ROOT"] . "/nomecartella";


    /*se il file è vuoto*/

    if(trim($_FILES["upfile"]["name"]) == "") {

    die(
    "Non hai indicato il file da uploadare!");

    }

    /*nome originale oppure rinomina se è privisto nel form*/
    /*sostituiamo gli spazi con _ per evitare problemi con gli url*/

    $file_name = ($new_name) ? $new_name $_FILES["upfile"]["name"];
    $file_name =str_replace(" ""_"$file_name);


    /*se si prova a caricare un file che non è un'immagine*/

    $allowed_types = array("image/gif","image/x-png","image/pjpeg","image/jpeg");
    if(!
    in_array($_FILES["upfile"]["type"],$allowed_types)) {

    die(
    "Il file non è di un tipo consentito, sono ammessi solo i seguenti: .gif, .jpg, .jpeg, .png");

    }

    /*upload o errore*/

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

    @
    move_uploaded_file($_FILES["upfile"]["tmp_name"], "$cartella_upload/$file_name"
    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["upfile"]["name"]);

    }
    ?>

  3. #3
    Grazie dell'aiuto...ti chiederei però di passarmi anche il form con il quale lanci questo script...per capirci qualcosa...ti ringrazio ancora...

  4. #4
    Ho capito come funziona lo script e funziona tutto fino a questo punto: cioè riesce a fare il controllo su nome e tipo di file.
    Non riesce invece ad entrare in questo if: per entrare nell'if che cosa deve trovare in quella posizione dell'array in modo che la funzione is_uploaded_file dia esito positivo?

    <?php
    if(@is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
    @move_uploaded_file($_FILES["upfile"]["tmp_name"], "$cartella_upload/$file_name")
    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["upfile"]["name"]);
    }
    ?>

  5. #5
    io non credo di essere all'altezza di darti consigli. Mi limito a dirti le cose che ho imparato dai miei studi.
    Quando da un form con un input type=file si invia un file presente su un pc del visitatore questo viene caricato in una cartella temporanea (nn sò dove sia e qual è) del server.
    Per effettuare upload in una cartella dello tuo sapzio web io faccio lo spostamento del file dalla cartela temporaea alla cartella da me desiderata.

    Nel mio script (che io utilizzo per miei scopi ed è funzionante) ci sono i particolare queste due funzioni:
    - $_FILES['image']['tmp_name'] contiene il percorso comprensivo del nome del file caricato nella cartella temporanea;
    - is_uploaded_file() verifica se il file in questione sia stato caricato attraverso il PHP;
    - move_uploaded_file() "sposta" il file, una specie di trascinamento, da una cartella (nel mio script quella temporanea) ad un'altra (quella dove voglio che il file sia carivcato).

    Inoltre la cartella in cui deve avvenire l'upload deve avere i permessi 777 e all'interno io ho caricato un file .hatcess al cui interno c'è scritto così:

    # av:PHP-upload
    php_value upload_max_filesize 5M
    php_value post_max_size 5M
    php_value max_input_time 300
    # PHP-upload


    Aspetta risposte da chi è più preparato di me... perchè va a finire che possa aver detto delle bagianate (ci tengo anche io a saperne qualcosina in più...)!!

  6. #6
    usi Linux o Windows?

  7. #7
    Come sistema operativo uso Windows 7.
    Come server locale uso Xampp.

  8. #8
    lui ti chiedeva il server che utilizzi on line...

    Io il server che utilizzo è linux.

    Su un dominio register.it utilizzo linux sicuro.
    Ma lo stesso script lo utilizzo su altervista dove nn sò che tipo di server ho e mi funziona ugualmente.

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    è importante anche che il form abbia enctype="multipart/form-data"...

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.