Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    Aiuto su upload multiplo

    sto provando a caricare più foto contemporaneamente:
    Codice PHP:
    // upload_images.php
    <form action="check_image.php" method="post" enctype="multipart/form-data">
                <table>
                    <tr>
                        <td>Upload: </td>
                    </tr>
                    <tr>
                        <td><input type="file" name="uploadfile" /></td>
                    </tr>
                    <tr>
                        <td><input type="file" name="uploadfile2" /></td>
                    </tr>
                    <tr>
                        <td><input type="file" name="uploadfile3" /></td>
                    </tr>
                    <tr>
                        <td>Caption: </td>
                        <td><input type="text" name="caption" /></td>
                    </tr>
                    <tr>
                        <td>Category: </td>
                        <td>
                            <?php
                            
    include_once 'config.php';
                            
    $query "select * from category order by title asc";
                            
    $result mysql_query($query) or die(mysql_error($link));
                            echo 
    '<select name="category">';
                            echo 
    '<option value="javascript:void(0)">Scegli la categoria</option>';
                            while (
    $riga mysql_fetch_array($result)) {
                                echo 
    "<option value=" $riga['title'] . ">" $riga['title'] . "</option>";
                            }
                            echo 
    '</select>';
                            echo 
    '

    '
    ;
                            
    ?>
                        </td>
                    </tr>
                    <tr>
                        <td><input type="submit" name="upload" value="Upload" /></td>
                    </tr>
                </table>
            </form>
    Codice PHP:
    // check_image.php
    $error 'Formato non supportato';
    switch (
    $type) {
        case 
    IMAGETYPE_GIF:
            
    $image imagecreatefromgif($_FILES['uploadfile']['tmp_name']) or die($error);
            
    $image2 imagecreatefromgif($_FILES['uploadfile2']['tmp_name']) or die($error);
            
    $image3 imagecreatefromgif($_FILES['uploadfile3']['tmp_name']) or die($error);
            break;
        case 
    IMAGETYPE_JPEG:
            
    $image imagecreatefromjpeg($_FILES['uploadfile']['tmp_name']) or die($error);
            
    $image2 imagecreatefromjpeg($_FILES['uploadfile2']['tmp_name']) or die($error);
            
    $image3 imagecreatefromjpeg($_FILES['uploadfile3']['tmp_name']) or die($error);
            break;
        case 
    IMAGETYPE_PNG:
            
    $image imagecreatefrompng($_FILES['uploadfile']['tmp_name']) or die($error);
            
    $image2 imagecreatefrompng($_FILES['uploadfile2']['tmp_name']) or die($error);
            
    $image3 imagecreatefrompng($_FILES['uploadfile3']['tmp_name']) or die($error);
            break;
        default:
            die(
    $error);
    }

    // inserisce le info nella tabella
    $query 'insert into images (image_caption,image_date,image_category) values ("' $image_caption '","' $image_date '","' $image_category '")';
    $result mysql_query($query$db) or die(mysql_error($db));
    // recupera il valore image_id generato in fase di inserimento
    $last_id mysql_insert_id();
    // assicuriamo che l'immagine non sovrascriva le altre esistenti
    $imagename $last_id "_" $_POST['category'] . '.jpg';
    $nome imagejpeg($image$dir '/' $imagename100);
    $nome2 imagejpeg($image2$dir '/' $imagename100);
    $nome3 imagejpeg($image3$dir '/' $imagename100);
    imagedestroy($image$image2$image3); 
    in pratica mi carica solo l'ultima foto e mi da un errore su imadestry dicendo che la sintassi è sbagliata.
    come faccio a caricare più foto??

  2. #2
    per quanto riguarda l'errore di imagedestroy:

    Codice PHP:

    imagedestroy
    ($image);
    imagedestroy($image2);
    imagedestroy($image3); 
    Per il corretto upload di più file guarda qui:

    http://php.net/manual/en/features.fi...d.multiple.php


  3. #3
    ho fatto in quest'altra maniera perchè nn riuscivo ad integrarlo con lo switch (anche se mi piaceva di più):
    Codice PHP:
    $maxSize 5000//massima dimensione dei file in kilobyte
    $acceptType = array(//tipi di file accettati, in questo caso solo immagini
        
    'png' => 'image/png',
        
    'jpe' => 'image/jpeg',
        
    'jpeg' => 'image/jpeg',
        
    'jpg' => 'image/jpeg',
        
    'gif' => 'image/gif',
        
    'bmp' => 'image/bmp',
        
    'ico' => 'image/vnd.microsoft.icon',
    );
    $cartella "images/"//cartella dove vengono caricati i file nel server
    $image_caption $_POST['caption'];
    $image_category $_POST['category'];
    $image_date date('Y-m-d');
    list (
    $width$heigth$type$attr) = getimagesize($_FILES['file']['tmp_name']);
    for (
    $i 0$i count($_FILES['file']['name']); $i++) {
        echo 
    "Risultato file " . ($i 1) . ": " singleUpload($i$cartella$maxSize$acceptType) . "
    "
    ;
    }

    function 
    singleUpload($i$cartella$maxSize$acceptType) {
        if (
    $_FILES['file']['name'][$i] != "") {
            
    $destinazione $cartella basename($_FILES['file']['name'][$i]);
            if (
    $_FILES['file']['size'][$i] <= $maxSize 1024) {
                if (
    in_array($_FILES['file']['type'][$i], $acceptType)) {
                    if (
    move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione)) {
                        return 
    "File caricato con successo!";
                    } else {
                        return 
    "Errore nell'upload del file";
                    }
                } else {
                    return 
    "Tipo di file non accettato!";
                }
            } else {
                return 
    "Dimensione del file troppo grande, massima dimensione accettata: " $maxSize " kilobyte";
            }
        } elseif (isset(
    $_POST['upload'])) {
            return 
    "Nessun file inserito!";
        }

    avrei però ancora dubbi su qualche cosa.
    come lo metto questo?
    Codice PHP:
    list ($width$heigth$type$attr) = getimagesize($_FILES['file']['tmp_name']); 
    aggiungo dati a un db e come nome gli vorrei dare l'id più il nome della categoria.
    dove posso dargli il nome?
    Codice PHP:
    $query 'insert into images (image_caption,image_date,image_category) values ("' $image_caption '","' $image_date '","' $image_category '")';
    $result mysql_query($query$db) or die(mysql_error($db));
    $last_id mysql_insert_id();
    $imagename $last_id "_" $_POST['category'] . '.jpg';
    $nome imagejpeg($image$dir '/' $imagename100); 
    imagedestroy(); come lo metto??

    nun gliela faccio più

  4. #4
    adesso funziona quasi tutto tranne il fatto che mi carica solo una foto:
    Codice PHP:
    // form di upload 
           <form action="check_image.php" method="post" enctype="multipart/form-data">
                <table>
                    <tr>
                        <td>Upload: </td>
                    </tr>
                    <tr>
                        <td><input type="file" name="file[]" /></td>
                    </tr>
                    <tr>
                        <td><input type="file" name="file[]" /></td>
                    </tr>
                    <tr>
                        <td>Caption: </td>   
                    </tr>
                    <tr>
                        <td><input type="text" name="caption" /></td>
                    </tr>
                    <tr>
                        <td>Category: </td>
                    </tr>
                    <tr>
                        <td>
                            <?php
                            
    include_once 'config.php';
                            
    $query "select * from category order by title asc";
                            
    $result mysql_query($query) or die(mysql_error($link));
                            echo 
    '<select name="category">';
                            echo 
    '<option value="javascript:void(0)">Scegli la categoria</option>';
                            while (
    $riga mysql_fetch_array($result)) {
                                echo 
    "<option value=" $riga['title'] . ">" $riga['title'] . "</option>";
                            }
                            echo 
    '</select>';
                            echo 
    '

    '
    ;
                            
    ?>
                        </td>
                    </tr>
                    <tr>
                        <td><input type="submit" name="upload" value="Upload" /></td>
                    </tr>
                </table>
            </form>
    Codice PHP:
    // check_image.php
    include_once 'config.php';
    $maxSize 500//massima dimensione dei file in kilobyte
    $acceptType = array(//tipi di file accettati, in questo caso solo immagini
        
    'png' => 'image/png',
        
    'jpe' => 'image/jpeg',
        
    'jpeg' => 'image/jpeg',
        
    'jpg' => 'image/jpeg',
        
    'gif' => 'image/gif',
        
    'bmp' => 'image/bmp',
        
    'ico' => 'image/vnd.microsoft.icon',
    );
    $cartella "images/"//cartella dove vengono caricati i file nel server
    $image_caption $_POST['caption'];
    $image_category $_POST['category'];
    $image_date date('Y-m-d');
    $query 'insert into images (image_caption,image_date,image_category) values ("' $image_caption '","' $image_date '","' $image_category '")';
    $result mysql_query($query$db) or die(mysql_error($db));
    for (
    $i 0$i count($_FILES['file']['name']); $i++) {
        echo 
    "Risultato file " . ($i 1) . ": " singleUpload($i$cartella$maxSize$acceptType) . "
    "
    ;
    }

    function 
    singleUpload($i$cartella$maxSize$acceptType) {
        if (
    $_FILES['file']['name'][$i] != "") {
    //        $destinazione = $cartella . basename($_FILES['file']['name'][$i]);
            
    $destinazione $cartella basename(mysql_insert_id() . "_" $_POST['category'] . '.jpg');
            if (
    $_FILES['file']['size'][$i] <= $maxSize 1024) {// da levare appena il resto funziona
                
    if (in_array($_FILES['file']['type'][$i], $acceptType)) {
                    if (
    move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione)) {
                        return 
    "File caricato con successo!";
                    } else {
                        return 
    "Errore nell'upload del file";
                    }
                } else {
                    return 
    "Tipo di file non accettato!";
                }
            } else {
                return 
    "Dimensione del file troppo grande, massima dimensione accettata: " $maxSize " kilobyte";
            }
        } elseif (isset(
    $_POST['upload'])) {
            return 
    "Nessun file inserito!";
        }


  5. #5
    risolto.
    basta mettere la query nel ciclo for.

  6. #6
    come nn detto.
    ho notato un grosso problema sull'assegnazione dei nomi delle immagini.
    Codice PHP:
    // form di caricamento
    <form action="check_image.php" method="post" enctype="multipart/form-data">
                <table>
                    <tr>
                        <td>Upload: </td>
                    </tr>
                    <tr>
                        <td><input type="file" name="file[]" /></td>
                    </tr>
                    <tr>
                        <td><input type="file" name="file[]" /></td>
                    </tr>
                    <tr>
                        <td>Caption: </td>   
                    </tr>
                    <tr>
                        <td><input type="text" name="caption" /></td>
                    </tr>
                    <tr>
                        <td>Category: </td>
                    </tr>
                    <tr>
                        <td>
                            <?php
                            
    include_once 'config.php';
                            
    $query "select * from category order by title asc";
                            
    $result mysql_query($query) or die(mysql_error($link));
                            echo 
    '<select name="category">';
                            echo 
    '<option value="javascript:void(0)">Scegli la categoria</option>';
                            while (
    $riga mysql_fetch_array($result)) {
                                echo 
    "<option value=" $riga['title'] . ">" $riga['title'] . "</option>";
                            }
                            echo 
    '</select>';
                            echo 
    '

    '
    ;
                            
    ?>
                        </td>
                    </tr>
                    <tr>
                        <td><input type="submit" name="upload" value="Upload" /></td>
                    </tr>
                </table>
            </form>
    Codice PHP:
    <?php

    include_once 'link.html';
    include_once 
    'config.php';
    $maxSize 500//massima dimensione dei file in kilobyte
    $acceptType = array(//tipi di file accettati, in questo caso solo immagini
        
    'png' => 'image/png',
        
    'jpe' => 'image/jpeg',
        
    'jpeg' => 'image/jpeg',
        
    'jpg' => 'image/jpeg',
        
    'gif' => 'image/gif',
        
    'bmp' => 'image/bmp',
        
    'ico' => 'image/vnd.microsoft.icon',
    );
    $cartella "images/"//cartella dove vengono caricati i file nel server
    $image_caption $_POST['caption'];
    $image_category $_POST['category'];
    $image_date date('Y-m-d');

    function 
    file_extension($filename) {
        
    $path_info pathinfo($filename);
        return 
    $path_info['extension'];
    }

    function 
    singleUpload($i$cartella$maxSize$acceptType) {
        if (
    $_FILES['file']['name'][$i] != "") {
            
    $destinazione $cartella mysql_insert_id() . "_" $_POST['category'] . "." file_extension(basename($_FILES['file']['name'][$i]));
            if (
    $_FILES['file']['size'][$i] <= $maxSize 1024) {// da levare appena il resto funziona
                
    if (in_array($_FILES['file']['type'][$i], $acceptType)) {
                    if (
    move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione)) {
                        return 
    "File caricato con successo!";
                    } else {
                        return 
    "Errore nell'upload del file";
                    }
                } else {
                    return 
    "Tipo di file non accettato!";
                }
            } else {
                return 
    "Dimensione del file troppo grande, massima dimensione accettata: " $maxSize " kilobyte";
            }
        } elseif (isset(
    $_POST['upload'])) {
            return 
    "Nessun file inserito!";
        }
    }

    for (
    $i 0$i count($_FILES['file']['name']); $i++) {
        echo 
    "Risultato file " . ($i 1) . ": " singleUpload($i$cartella$maxSize$acceptType) . "
    "
    ;
        
    $query 'insert into images (image_caption,image_date,image_category) values ("' $image_caption '","' $image_date '","' $image_category '")';
        
    $result mysql_query($query$db) or die(mysql_error($db));
    }
    ?>
    mi salva le immagini e mi scrive i dati giusti sul db.
    il problema è invece nell'assegnamento del nome.
    dovrebbe essere così:
    id-dell'ultimo-record-inserito_nome-categoria_estensione.

    invece mi da gli indici sballati:
    il primo comincia con zero.
    se cambio categoria ricomincia da 1, invece dovrebbe continuare nel conteggio.
    insomma fa casino con gli indici e nn capisco perchè!

  7. #7
    proverei richiamando la funzione mysql_insert_id() subito dopo la query:

    Codice PHP:
    function singleUpload($i$recordID$cartella$maxSize$acceptType) {
        if (
    $_FILES['file']['name'][$i] != "") {
            
    $destinazione $cartella $recordID "_" $_POST['category'] . "." file_extension(basename($_FILES['file']['name'][$i]));
            if (
    $_FILES['file']['size'][$i] <= $maxSize 1024) {// da levare appena il resto funziona
                
    if (in_array($_FILES['file']['type'][$i], $acceptType)) {
                    if (
    move_uploaded_file($_FILES['file']['tmp_name'][$i], $destinazione)) {
                        return 
    "File caricato con successo!";
                    } else {
                        return 
    "Errore nell'upload del file";
                    }
                } else {
                    return 
    "Tipo di file non accettato!";
                }
            } else {
                return 
    "Dimensione del file troppo grande, massima dimensione accettata: " $maxSize " kilobyte";
            }
        } elseif (isset(
    $_POST['upload'])) {
            return 
    "Nessun file inserito!";
        }
    }

    for (
    $i 0$i count($_FILES['file']['name']); $i++) {
       
        
    $query 'insert into images (image_caption,image_date,image_category) values ("' $image_caption '","' $image_date '","' $image_category '")';

        
    $result mysql_query($query$db) or die(mysql_error($db));
        
    $last_id mysql_insert_id();

     echo 
    "Risultato file " . ($i 1) . ": " singleUpload($i$last_id$cartella$maxSize$acceptType) .  "
    "
    ;


    ps. un appunto: quando fai la query di insert, dovresti verificare di eseguirla solo nel caso in cui il file sia effettivamente stato uplodato, altrimenti ti potresti trovare dei dati incongruenti tra la base di dati e il file system (puoi anche usare una transazione)

  8. #8
    facendo così mi compare sempre il messaggio:
    così mi dice sempre:
    Risultato file 1: Dimensione del file troppo grande, massima dimensione accettata: images/ kilobyte
    Risultato file 2: Dimensione del file troppo grande, massima dimensione accettata: images/ kilobyte
    anche se le immagini che cerco di uplodare sono da 12 kb.

    nn riesco a capire perchè ci sono sempre tutti sti problemi.

    ps: a quello penserò quando sarò riuscito a sistemare sta rottura di scatole

  9. #9
    se tu togli questo controllo:

    Codice PHP:
    if ($_FILES['file']['size'][$i] <= $maxSize 1024) { 
    cosa succede?

  10. #10
    succede che passa all'errore successivo.
    in questo caso:

    Warning: in_array() [function.in-array]: Wrong datatype for second argument in /web/htdocs/........./check_image.php on line 35
    Risultato file 1: Tipo di file non accettato!

    Warning: in_array() [function.in-array]: Wrong datatype for second argument in /web/htdocs/........../check_image.php on line 35
    Risultato file 2: Tipo di file non accettato!

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.