Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 28
  1. #1
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502

    Uplodare più file con PHP

    Ciao ragazzi, ho creato questo script:

    codice:
    <form action="setting.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="1000">  1MB
    Allegato uno:<input type="file" name="uploadfile" />
    Allegato due: <input type="file" name="uploadfile2" />
    Allegato tre: <input type="file" name="uploadfile3" />
    Allegato quattro: <input type="file" name="uploadfile4" />
    Allegato cinque: <input type="file" name="uploadfile5" />
    <input type="submit" class="input1" value="Carica!" />
    </form>
    Codice PHP:
    <?php
    // controllo che non ci siano stati errori nell'upload (codice = 0)  
    if ($_FILES['uploadfile']['error'] == 0){ 
    // upload ok 
    // controllo che il file sia in formato gif 
    if (($_FILES['uploadfile']['type'] != "image/jpg") OR ($_FILES['uploadfile']['type'] != "image/jpeg") OR ($_FILES['uploadfile']['type'] != "image/gif")) die("Formato file non valido, è permesso solo il formato gif, jpg o jpeg");  
    // copio il file dalla cartella temporanea a quella di destinazione mantenendo il nome originale  
    copy($_FILES['uploadfile']['tmp_name'], "foto/".$_FILES['uploadfile']['name']) or die("Impossibile caricare il file");
    // upload terminato, stampo alcune info sul file 
    echo "Upload terminato con successo:
    "

    echo 
    "Nome file: ".$_FILES['uploadfile']['name']."
    "

    echo 
    "Dimensione file: ".$_FILES['uploadfile']['size']."
    "

    echo 
    "Tipo MIME file: ".$_FILES['uploadfile']['type']; 

    else{ 
    // controllo il tipo di errore 
    if ($_FILES['uploadfile']['error'] == 2){ 
    // errore, file troppo grande (> 1MB) 
    die("Errore, file troppo grande: il massimo consentito è 1MB"); 

    else{ 
    // errore generico 
    die("Errore, impossibile caricare il file"); 


    ?>
    Questo, però, è per caricare solamente un'immagine, e funziona.
    Se volessi, anzi dovessi, per forza, caricarne cinque, come dovrei fare? Mi basterebbe fare così:

    Codice PHP:
    if (($_FILES['uploadfile']['error'] == 0) AND ($_FILES['uploadfile1']['error'] == 0) ...blabla){
    if ((
    $_FILES['uploadfile']['type'] != "image/jpg") AND ($_FILES['uploadfile1']['type'] != "image/jpg")) die("Formato file non valido, è permesso solo il formato jpg");
    copy($_FILES['uploadfile']['tmp_name'], "foto/".$_FILES['uploadfile']['name']) or die("Impossibile caricare il file");
    copy($_FILES['uploadfile1']['tmp_name'], "foto/".$_FILES['uploadfile']['name']) or die("Impossibile caricare il file"); 
    Dato che devo controllare varie estensioni, è giusta una cosa del genere:
    Codice PHP:
    $up1 $_FILES['uploadfile1'];
    $up2 $_FILES['uploadfile2'];
    $up3 $_FILES['uploadfile3'];
    $up4 $_FILES['uploadfile4'];
    $up5 $_FILES['uploadfile5'];

    if (((
    $up1['type'] != "image/jpg") OR ($up1['type'] != "image/jpeg") OR ($up1['type'] != "image/gif")) AND (($up2['type'] != "image/jpg") OR ($up2['type'] != "image/jpeg") OR ($up2['type'] != "image/gif"))) 
    Aspetto un resoconto
    Vash
    Personal Home Page

  2. #2
    puoi confrontarti con la pillola di marketto in merito agli upload multipli.

    puoi trarne spunto e riflessione....

    http://forum.html.it/forum/showthrea...hreadid=764691

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502
    Ciao Piero, grazie, sono riuscito a farlo funzionare.
    Ora mi domando solo una cosa: file_exists() mi verifica se il file è già presenta in una cartella; in caso fosse rpesente, come faccio a farlo rinominare e poi a sapere il nuovo nome? (dovrei salvarlo in un database)
    Personal Home Page

  4. #4
    Originariamente inviato da Vash SD
    Ciao Piero, grazie, sono riuscito a farlo funzionare.
    Ora mi domando solo una cosa: file_exists() mi verifica se il file è già presenta in una cartella; in caso fosse rpesente, come faccio a farlo rinominare e poi a sapere il nuovo nome? (dovrei salvarlo in un database)
    Si puo' fare in molti modi. Un rename oppure sospendi l'inserimento richiedendo un nuovo nome, oppure associ gia' al form la possibilita' di dare un nuovo nome al file che si sta caricando. Puoi aggiungere un suffisso od un prefisso al nome file...

    Ovviamente il nuovo nome sara' posto in una variabile che poi utilizzerai per l'inserimento nel db.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502
    Come faccio a fare un rename che non sia uguale ai nomi delle altre foto? Puoi farmi un esempio pratico? Scusa e grazie
    Personal Home Page

  6. #6
    Originariamente inviato da Vash SD
    Come faccio a fare un rename che non sia uguale ai nomi delle altre foto? Puoi farmi un esempio pratico? Scusa e grazie
    domanda da 100 milioni.

    Dipende da cosa vuoi fare. Per esempio hai delle foto e per lo stesso soggetto hai una foto migliore allora sovrascrivi. La vuoi aggiungere ma gia' il nome esiste, allora devi avere una logica tua di come rinominare. Deve rinominarla l'utente che invia allora dovrai sospendere l'operazione e rimandare con avviso al form.

    banalmente il controllo del nome file lo puoi fare sia nella cartella sia nei nomi file presenti nel database. Ma se non si sa la logica da applicare e con cui debbono essere rinominati allora niet, si perde tempo.

    Per esempio potresti caricare i nomi dei file del db in un array e poi verificare con in_array() .
    Se presente puoi scegliere di rimandare al form oppure di rinominare il nome del file aggiungendo un suffisso e ricontrollando nuovamente se gia' presente.

    un banalissimo esempio potrebbe essere:
    Codice PHP:
    $nome $_FILES['ciccio']['name'];

    // da database
    $array = array('ciccio''ciccino''ciccio1');

    $nome 'ciccio1';
    $i 1;

    while (
    in_array($nome$array)) {
    $nome $nome."_".$i;
    $i++;

    in questo modo aggiungerebbe un suffisso numerico al nome del file preceduto da un _

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502
    Sì, scusami, hai ragione: non mi sono spiegato.
    Io ho un form che invia i dati di un cliente e le foto (solo il nome) alla tabella cliente. Visto che al giorno si iscrivono più persone, c'è rischio che, nella cartella foto_provvisorie, la directory dove vanno a caricare le foto i clienti, vi sia la possibilità di sovrascrittura delle foto.

    Io volevo caricare le foto:
    Se il nome della foto c'è già, rinominarla.

    Dal tuo script però ho capito come fare. Grazie piero, in caso posto qui

    Saluti
    Personal Home Page

  8. #8
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502
    Pensavo di aver risolto così:

    Codice PHP:
                                    $up1 $al1['name'];
                    
    $up2 $al2['name'];
                    
    $up3 $al3['name'];
                    
    $up4 $al4['name'];
                    
    $up5 $al5['name'];
                    
                    if (
    file_exists($al1['name']))
                        {
    $up1 $al1['name']."1";}
                        
                    if (
    file_exists($al2['name']))
                        {
    $up2 $al2['name']."1";}
                        
                    if (
    file_exists($al3['name']))
                        {
    $up3 $al3['name']."1";}
                    
                    if (
    file_exists($al4['name']))
                        {
    $up4 $al4['name']."1";}
                        
                    if (
    file_exists($al5['name']))
                        {
    $up5 $al5['name']."1";} 
    Così, però, c'è un problema:
    $al1['name'], se lo vedi, è il nome della foto più l'estensione: quindi, se avessi un'altra foto, con lo stesso nome, la cambierebbe con: prova.jpg1. C'è un modo per sapere solo il nome?

    Grazie
    Personal Home Page

  9. #9
    Il mio era solo un esempio. metti un prefisso invece del suffisso....

    Codice PHP:
                    if (file_exists($al1['name']))
                        {
    $up1 "1_".$al1['name']; } 

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  10. #10
    Utente di HTML.it L'avatar di Vash SD
    Registrato dal
    Sep 2006
    Messaggi
    502
    Ahahah giusto, scusami!
    Grazie mille!!
    Personal Home Page

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.