Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306

    Gestire upload di un file su una cartella e db

    Ciao a tutti ragazzi

    ho creato un account su Altervista.

    Ho creato nel db una tabella foto con i campi colonna "id" , "titolo" ," descrizione", "indirizzo_foto".

    Nella cartella principale del proprio sito ho creato una pagina index.html nella quale c'è un link che mi porta al form per inserire l'immagine (form che si trova sempre nella cartella principale).

    Poi ho creato la cartella "allegati" sempre nella cartella principale, dove andare a memorizza l'immagine/documento.

    1)Questa cartella deve avere solo i permessi di scrittura , o tutti i permessi e quindi 777?


    Questo è il form
    codice HTML:
    <!DOCTYPE html>
    <html>
    <head><meta charset="UTF-8"><title>modulo web</title></head>
    <body>
    <h3>Questa è un modulo web collegato al database ed al programma upload</h3>
    
    <form method="post" enctype="multipart/form-data" action="upload.php">
    <p>Immagine <input type="file" size="30" name="allegato"></p><p>Titolo <input type="text" size="10" name="titolo" ></p>
    <p>Breve Descrizione<br> <textarea name="descrizione" rows="8" cols="28"></textarea></p></select></p>
    <p>
    <input type="submit" value="Aggiungi"></p></form>
    
    </body>
    </html>

    Questo è il file di memorizzazione sulla cartella e nella tabella del db.

    Codice PHP:
    <?php
    require_once('configurazione_credenziali_esterno_altervista.php');
    $link = @mysqli_connect(DB_HOSTDB_USERNDB_PSW) or die("Errore connessione: "mysqli_connect_error());

    $dbw = @mysqli_select_db($linkDB_my) or die("Errore apertura database: " mysqli_error($link));

    $nomefile_tmp=$_FILES["allegato"]["tmp_name"];

    $tipoallegato=$_FILES["allegato"]["type"];

    $nomeallegato=$_FILES["allegato"]["name"]; //nome dell'allegato completo di estensione

    $fullpath="allegati/";
    //cartella dove salverò i doc. deve avere permessi di scrittura che sono//da modificare in fase di creazione della cartella tramite programma FTP o tramite il pannello di controllo offerto dal provider

    if(isset($nomeallegato)){    

    $okcopy=copy($nomefile_tmp,"$fullpath$nomeallegato");}

    if(
    $okcopy){
        
    //recupero le info dal form   

     
    $titolo=$_POST['titolo'];  
      
    $desc=$_POST['descrizione'];   
     
    $urlfoto='http://sitositosito.altervista.org/'.$fullpath.$nomeallegato;    //è l'indirizzo assoluto di dove si trova l'immagine


        
    $rs=@mysqli_query($link,"INSERT INTO foto (titolo,descrizione,indirizzo_foto) VALUES('$titolo','$desc','$urlfoto')");    //valorizzo le colonne titolo, descrizione, foto con i dati appena recuperati   

     
    if($rs){    echo "ok. Dati salvati<br>"
       echo 
    "$urlfoto";    }   
     else{echo 
    "riprova<br>";   
     echo 
    "$urlfoto";}

    }
    ?>

    File per leggere cosa ho memorizzato nel db

    Codice PHP:
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>leggo i file dal db</title></head>
    <body>
    <h1>leggo i file dal db di altervista</h1>


    <?php

    require_once('configurazione_credenziali_esterno_altervista.php');
    $link = @mysqli_connect(DB_HOSTDB_USERNDB_PSW) or die("Errore connessione: "mysqli_connect_error());$dbw = @mysqli_select_db($linkDB_my) or die("Errore apertura database: " mysqli_error($link));

    $strsql"SELECT * FROM foto ";$rs = @mysqli_query($link$strsql) or die("Errore query database: " mysqli_error($link));

    while (
    $riga mysqli_fetch_array($rs)) { 
       
    $str_id $riga['id'];   
     
    $str_nome $riga['titolo']; 
       
    $str_desc $riga['descrizione'];  
      
    $str_indirizzo $riga['indirizzo_foto'];  
      echo 
    "Riga:  $str_id -> Titolo: $str_nome - Descrizione: $str_desc - Indirizzo: $str_indirizzo<br>  
      <img src='"
    .$str_indirizzo."'><br>";      
      }        
        
    ?>                                         
       </body>  
      </html>
    Mi funziona tutto alla perfezione.

    Ho però delle domande al riguardo:

    per fare dei controlli sull'estensione, sulla dimensione dei file, per esempio posso
    accettare foto .jpeg, .tiff , jpg di 5mb, gif di 2 mb, documenti docx, doc e pdf da 3 mb ma non file.exe cosa devo fare?


    Questa parte con il recupero delle info come la si sfrutta bene?
    Codice PHP:
    $nomefile_tmp=$_FILES["allegato"]["tmp_name"];
    $tipoallegato=$_FILES["allegato"]["type"];
    $nomeallegato=$_FILES["allegato"]["name"

  2. #2
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    nel seguente link c'è un ottimo esempio:


    http://www.w3schools.com/php/php_file_upload.asp


  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306
    ciao

    grazie per avermi risposto

    C'è questa istruzione
    Codice PHP:
    $imageFileType pathinfo($target_file,PATHINFO_EXTENSION); 
    che prende l'estensione del file
    ma nel mio file ho già
    Codice PHP:
    $tipoallegato=$_FILES["allegato"]["type"]; 
    che fa questo compito



    e quindi considerando questo che c'è scritto

    Codice PHP:
    // Allow certain file formats
    if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
    && $imageFileType != "gif" ) {
        echo 
    "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
        
    $uploadOk 0;

    penserei ad una cosa del genere

    Codice PHP:
    if($tipoallegato != "jpg" && $tipoallegato!= "png" &&      
       
    $tipoallegato != "jpeg"    &&  $tipoallegato != "gif" ) { 
              echo 
    "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";                } 



    Per la dimensione posso anche aggiungere

    Codice PHP:
    $dimallegato=$_FILES["allegato"]["size"];


    if (
    $dimallegato 500000) {
        echo 
    "Sorry, your file is too large."

  4. #4
    Utente di HTML.it L'avatar di ttcc
    Registrato dal
    Dec 2008
    Messaggi
    489
    niente è certo se non viene testato! testalo

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306
    Allora diciamo che funziona.....

    ma non uso la funzione che c'è nel link


    Codice PHP:
    $imageFileType pathinfo($target_file,PATHINFO_EXTENSION); 
    forse perchè è stato impostato per recuperare le info del file con le prime assegnazioni di $nomeallegato, $tipoallegato......
    ???


    Cmq ci devono essere delle limatine

    esempio

    Codice PHP:
    if($tipoallegato != "jpg" && $tipoallegato!= "png" &&      
       
    $tipoallegato != "jpeg"    &&  $tipoallegato != "gif" ) { 
              echo 
    "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";              
      } 
    Codice PHP:
    $dimallegato=$_FILES["allegato"]["size"];


    if (
    $dimallegato 500000) {
        echo 
    "Sorry, your file is too large."
    ci devo aggiungere nei due casi un
    exit;

    oppure anche un link che mi porti alla pagina precedente di inserimento dati.

    giusto??


    altra cosa: se per esempio c'è una parola accentata nel file : esempio: "carta-di-identità.doc"

    come faccio a salvarla bene nel db (e quidni nel percorso $urlfoto) e nella cartella allegati?
    Ultima modifica di Alfoxx; 27-09-2016 a 13:07

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306
    a parte le domande di prima,

    confermo che per poter accettare o meno i file pdf devo considerare che la loro estensione è application/pdf

    Codice PHP:
    if($tipoallegato != "jpg" && $tipoallegato!= "png" &&      
       
    $tipoallegato != "jpeg"    &&  $tipoallegato != "gif"  &&  $tipoallegato != "application/pdf") { 
              echo 
    "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";              
      } 

    Per i documenti è possibiile che devo considerare questa come estensione??

    se è .docx ----> application/vnd.openxmlformats-officedocument.wordprocessingml.document


    se è .doc ----->application/msword

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    72
    Quote Originariamente inviata da Alfoxx Visualizza il messaggio
    a parte le domande di prima,

    confermo che per poter accettare o meno i file pdf devo considerare che la loro estensione è application/pdf

    Codice PHP:
    if($tipoallegato != "jpg" && $tipoallegato!= "png" &&      
       
    $tipoallegato != "jpeg"    &&  $tipoallegato != "gif"  &&  $tipoallegato != "application/pdf") { 
              echo 
    "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";              
      } 

    Per i documenti è possibiile che devo considerare questa come estensione??

    se è .docx ----> application/vnd.openxmlformats-officedocument.wordprocessingml.document


    se è .doc ----->application/msword


    Alfoxx basta solo questa condizione o bisogna anche impostare $filetype == 'pdf' ?

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306
    stamattina, proprio per quello che hai scritto tu e boots dall'altra parte, mi sono messo a ricontrollare quelle righe di controllo del mio file.

    questa istruzione $filetype == 'pdf' non serve a nulla
    perchè pdf non viene confrontato con nulla e quindi sia che lo neghi o meno passa. questo è quello che ho capito io.
    Perciò ho fatto anche la domanda per i file doc

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    72
    Quote Originariamente inviata da Alfoxx Visualizza il messaggio
    stamattina, proprio per quello che hai scritto tu e boots dall'altra parte, mi sono messo a ricontrollare quelle righe di controllo del mio file.

    questa istruzione $filetype == 'pdf' non serve a nulla
    perch� pdf non viene confrontato con nulla e quindi sia che lo neghi o meno passa. questo � quello che ho capito io.
    Perci� ho fatto anche la domanda per i file doc
    Io se lo nego non mi passa nulla, perci� penso che abbia un confronto con qualcosa scritto in precedenza e credo sia con [type] , se invece non metto la condizione, mi fa passare tutto!

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    306
    ti rispondo nell'altra discussione per non alterare i codici presenti

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.