Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56

    PHP upload foto dal pc allo spazio del web server

    salve, siccome quest'anno dovrò sostenere gli esami di stato ho deciso di portare una specie di gestionale, scritto con HTML, CSS (con framework bootstrap), PHP e MySQL per il database. Siccome inserire direttamente le immagini nei database è un operazione limitata e macchinosa, ho pensato di uplodare le immagini dal computer in una cartella dello spazio web dove sarà ospitato il mio sito e poi inserire in una tabella del database solo il percorso a quest'immagine a cui posso poi risalire tramite una query.
    Al momento quindi quello che mi interessa fare è uplodare la foto tramite un form. Siccome in PHP fino ad ora non ho mai utilizzato le funzioni di upload, mi sono messo a cercare un po su internet e sono arrivato a scrivere i seguenti codici:
    form.php
    codice:
    <!DOCTYPE html><html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <form enctype="multipart/form-data" action="upload.php" method="POST">
          <input type="hidden" name="MAX_FILE_SIZE" value="30000">
          Invia questo file: <input name="image" type="file"><br>
          <input type="submit" value="Invia File">
        </form> 
    </body>
    
    </html>



    questo è un semplice form che passa i parametri allo script upload.php

    codice:
    <?php$messaggio="";
    
    
    if(is_uploaded_file($_FILES['image']['tmp_name'])) {
    	
    	//controllo che il file non superi i 100 KB (1 kilobyte = 1024 byte)
    	if($_FILES['image']['size']>102400)
    		$messaggio.="Il file ha dimensioni che superano i 100 KB<br />";
    	
    	//recupero le informazioni sull'immagine
    	list($width, $height, $type, $attr)=getimagesize($_FILES['image']['tmp_name']);
    	
    	//controllo che le dimensioni (in pixel) non superino 800x600
    	if(($width>800) or ($height>600))
    		$messaggio.="Il file non deve superare le dimensioni di 800x600<br />";
    	
    	//controllo che il file sia in uno dei formati GIF, JPG o PNG
    	if(($type!=1) and ($type!=2) and ($type!=3))
    		$messaggio.="Il file caricato deve essere un'immagine<br />";
    
    
    	
    	//controllo che non esiste già un file con lo stesso nome
    	if(file_exists('file/'.$_FILES['image']['name']))
    		$messaggio.="Esiste già un file con lo stesso nome. Rinominare l'immagine prima di caricarla<br />";
    	
    	//salvo il file nella cartella di destinazione
    	if(!move_uploaded_file($_FILES['image']['tmp_name'], 'file/'.$_FILES['image']['name']))
    		$messaggio.="Errore imprevisto nel caricamento del file. Controllare i permessi della cartella di destinazione";
    	
    }
    
    
    if($messaggio!="")
    	echo $messaggio;
    ?>
    come potete vedere le immagini dovrebbero essere copiate nella cartella file
    che si trova nella stessa cartella dove stanno i due script. l'upload non avviene e non mi esce nessun errore. Come mai?
    attualmente sto lavorando tramite un web server locale. Ringrazio in anticipo chi saprà aiutarmi

  2. #2
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    hai provato a controllare i permessi della cartella file?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    Quote Originariamente inviata da jeppox Visualizza il messaggio
    hai provato a controllare i permessi della cartella file?
    sinceramente no perchè non saprei come fare per controllare. Se gentilmente mi dici come posso fare ed eventualmente come fare per modificare ..se può essere d'aiuto lavoro su windows

  4. #4

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    utilizzo EasyPHP-DevServer-14.1VC9 (è una versione un po vecchia ma la nuova non mi funziona, ho problemi anche con xampp)

  6. #6
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    ok non lo conosco, ma sembra che giri apache. Prova a dare un occhiata qui: http://www.paolopreite.it/index.php/...tato-su-apache o altrimenti potresti settare i permessi direttamente da un client tipo FileZilla, cliccando sulla cartella "file" col mouse destro e poi credo che in ITA si chiami proprietà.
    In php puoi settare con chmode: http://php.net/manual/de/function.chmod.php

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    Quote Originariamente inviata da jeppox Visualizza il messaggio
    ok non lo conosco, ma sembra che giri apache. Prova a dare un occhiata qui: http://www.paolopreite.it/index.php/...tato-su-apache o altrimenti potresti settare i permessi direttamente da un client tipo FileZilla, cliccando sulla cartella "file" col mouse destro e poi credo che in ITA si chiami proprietà.
    In php puoi settare con chmode: http://php.net/manual/de/function.chmod.php
    ho provato con filezilla ma non ci sono riuscito (non trovo una sezione che dice cambia permessi)
    ho scritto il seguente script per modificare i permessi:
    codice:
    <?php
    chmod("file", 777); 
    ?>
    ma nemmeno funziona. Ora la mia domanda è lasciando stare i permessi ma lo script che ho scritto per fare l'upload è corretto?

  8. #8
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    si l'upload te lo fa correttamente. L'unico problema che hai è che nel form setti la grandezza massima del file a 30KB, mentre tu vorresti al massimo 100KB. Siccome HTML non ti fa passare alcun file più grande di 30KB, nell'array $_FILES non ci trovi niente. Se provavi a fare l'upload con un file di 28KB per es. l'upload avrebbe funzionato, sempre che i permessi siano settati giusti.

    Cambia il valore di MAX_FILE_SIZE a 100KB (100000) e prova con un immagine che non superi i 100KB. O molto meglio non metti nessuna limitazione di grandezza nel form e cancella la riga con l'input:

    <input type="hidden" name="MAX_FILE_SIZE" value="30000">
    Ultima modifica di jeppox; 09-05-2018 a 20:28

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2017
    Messaggi
    56
    si il problema stava proprio nel form adesso funziona. Secondo te che peso devono avere le foto per un sito web (anche in termini di altezza e larghezza in px) e come posso fare per ridimensionarle?

  10. #10
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    tutto dipende da cosa vuoi fare risp. ottenere. Se vuoi ridimensionare le foto lato server, perché non sarai tu a fare l'upload, in PHP puoi utilizzare la funzione imagecopyresized() http://php.net/manual/en/function.imagecopyresized.php. Dovresti, sempre che non l'abbia già fatto, crearti un concetto di come sarà il risultato finale, una sorta di storyboard a livello di frontend, prima di iniziare a programmare. Più dettagli definisci e più sarà facile la realizzazione.

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.