Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    6

    Gestione caricamento foto in cartelle PHP - HTML5 problema

    Salve ho un problema. Vorrei riuscire a creare un sistema per caricare delle foto in cartelle utilizzando il drag and drop dell'html5.
    Ho il seguente codice per creare un nuovo album (nuovoAlbum.php):
    Codice PHP:
    <html>
    <head>
    <title></title>
    <script src="SpryAssets/SpryValidationTextField.js" type="text/javascript"></script>
    <link href="SpryAssets/SpryValidationTextField.css" rel="stylesheet" type="text/css">
    </head>
    <?php
    $nCartella 
    $_GET["nome"];
    ?>
    <body>
    <form name="form1" method="get" action="index.php">
      <span id="sprytextfield1">
      <label for="nome">Nome Album </label>
      <input type="text" name="nome" id="nome">
      

      <span class="textfieldRequiredMsg">Si prega di inserire il nome dell'album e premere invio.</span></span>
    </form>
    [url="../scegliCategoria.php"]Torna alle Categorie[/url]

    [url="../../index.php"]Torna al sito[/url]
    <script type="text/javascript">
    var sprytextfield1 = new Spry.Widget.ValidationTextField("sprytextfield1");
    </script>
    </body>

    </html>
    Questa è la pagina index.php dove creo la cartella e vorrei inserire le foto messe nel drag and drop dentro la cartella scritta dall'utente nella pagina "nuovoAlbum.php":


    Codice PHP:
    <?php
         
    //seleziono dove mettere le nuove cartelle
        
    chdir("./");
        
    opendir(".");
        
    $nCartella $_GET["nome"];
        
    mkdir($nCartella,"0777");
        echo 
    "La cartella " $nCartella " e' stata creata!";
    ?>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
            
            
            <link rel="stylesheet" href="./assets/css/styles.css" />
            
            <!--[if lt IE 9]>
              <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
            <![endif]-->
        </head>
        
        <body>
            <div id="dropbox">
              <span class="message">Trascina le immagini per caricarle nell'album 
    </span>
            </div>
            
            
            <script src="http://code.jquery.com/jquery-1.6.3.min.js"></script>
            
            
            <script src="./assets/js/jquery.filedrop.js"></script>
            
            
            <script src="./assets/js/script.js"></script>


    [url="./nuovoAlbum.php"]Torna per creare un nuovo Album[/url]

    [url="../scegliCategoria.php"]Torna alla scelta delle categorie[/url]

        </body>
    </html>
    i file collegati sono i seguenti:
    styles.css
    Codice PHP:
    *{
        
    margin:0;
        
    padding:0;
    }



    /*-------------------------
        General Styles
    --------------------------*/



    html{
        
    background:url('../img/background_tile_2.jpg');
        
    min-height:100%;
        
    position:relative;
        
    }

    body{
        
    color:#fff;
        
    min-height:600px;
        
    font:14px/1.3 'Segoe UI',Arialsans-serif;
    }

    aa:visited {
        
    text-decoration:none;
        
    outline:none;
        
    color:#54a6de;
    }

    a:hover{
        
    text-decoration:underline;
    }

    headerfooter{
        
    display:block;
    }



    /*-------------------------
        Header Styles
    --------------------------*/



    header{
        
    background:url('../img/background_tile_1.jpg');
        
    padding:75px;
        
    positionrelative;
    }

    header:before,
    #dropbox:before{
        
    displayblock;
        
    content:'';
        
    height:4px;
        
    width:100%;
        
    background:url('../img/blue_line.jpg');
        
    positionabsolute;
        
    top:0;
        
    left:0;
        
    box-shadow:0 2px 2px rgba(0,0,0,0.4);
    }


    h1{
        
    background:url('../img/logo.jpg'no-repeat top center;
        
    height:92px;
        
    overflowhidden;
        
    text-indent: -99999px;
        
    text-aligncenter;
    }



    /*-------------------------
        Dropbox Element
    --------------------------*/



    #dropbox{
        
    background:url('../img/background_tile_3.jpg');
        
        
    border-radius:3px;
        
    positionrelative;
        
    margin:80px auto 90px;
        
    min-height290px;
        
    overflowhidden;
        
    padding-bottom40px;
        
    width990px;
        
        
    box-shadow:0 0 4px rgba(0,0,0,0.3inset,-3px 2px rgba(0,0,0,0.1);
    }


    #dropbox .message{
        
    font-size11px;
        
    text-aligncenter;
        
    padding-top:160px;
        
    displayblock;
    }

    #dropbox .message i{
        
    color:#ccc;
        
    font-size:10px;
    }

    #dropbox:before{
        
    border-radius:3px 3px 0 0;
    }



    /*-------------------------
        Image Previews
    --------------------------*/



    #dropbox .preview{
        
    width:245px;
        
    height215px;
        
    float:left;
        
    margin55px 0 0 60px;
        
    positionrelative;
        
    text-aligncenter;
    }

    #dropbox .preview img{
        
    max-width240px;
        
    max-height:180px;
        
    border:3px solid #fff;
        
    displayblock;
        
        
    box-shadow:0 0 2px #000;
    }

    #dropbox .imageHolder{
        
    displayinline-block;
        
    position:relative;
    }

    #dropbox .uploaded{
        
    positionabsolute;
        
    top:0;
        
    left:0;
        
    height:100%;
        
    width:100%;
        
    backgroundurl('../img/done.png'no-repeat center center rgba(255,255,255,0.5);
        
    displaynone;
    }

    #dropbox .preview.done .uploaded{
        
    displayblock;
    }



    /*-------------------------
        Progress Bars
    --------------------------*/



    #dropbox .progressHolder{
        
    positionabsolute;
        
    background-color:#252f38;
        
    height:12px;
        
    width:100%;
        
    left:0;
        
    bottom0;
        
        
    box-shadow:0 0 2px #000;
    }

    #dropbox .progress{
        
    background-color:#2586d0;
        
    positionabsolute;
        
    height:100%;
        
    left:0;
        
    width:0;
        
        
    box-shadow0 0 1px rgba(2552552550.4inset;
        
        -
    moz-transition:0.25s;
        -
    webkit-transition:0.25s;
        -
    o-transition:0.25s;
        
    transition:0.25s;
    }

    #dropbox .preview.done .progress{
        
    width:100% !important;
    }



    /*----------------------------
        The Footer
    -----------------------------*/



    footer{
        
    display:block;
        
    background-color#151517;
        
        
    position:fixed;
        
    width:100%;
        
    height:70px;
        
    bottom:0;
        
    left:0;
        
    z-index100000;
        
        
    box-shadow-1px 2px #171717;
        
    -webkit-box-shadow-1px 2px #171717;
        
    -moz-box-shadow-1px 2px #171717;
    }

    footer h2{
        
    font-size:20px;
        
    font-weight:normal;
        
    left:50%;
        
    margin-left:-400px;
        
    padding:22px 0;
        
    position:absolute;
        
    width540px;
        
    color:#eee;
    }

    footer a.tzine,a.tzine:visited{
        
    background:url("../img/tzine.png"no-repeat right top;
        
    border:none;
        
    text-decoration:none;
        
    color:#FCFCFC;
        
    font-size:12px;
        
    height:70px;
        
    left:50%;
        
    line-height:31px;
        
    margin:23px 0 0 110px;
        
    position:absolute;
        
    top:0;
        
    width:290px;

    script.js:
    Codice PHP:
    $(function(){
        
        var 
    dropbox = $('#dropbox'),
            
    message = $('.message'dropbox);
        
        
    dropbox.filedrop({
            
    // The name of the $_FILES entry:
            
    paramname:'pic',
            
            
    maxfiles200,
            
    maxfilesize10,
            
    url'post_file.php',
            
            
    uploadFinished:function(i,file,response){
                $.
    data(file).addClass('done');
                
    // response is the JSON object that post_file.php returns
            
    },
            
            
    error: function(errfile) {
                switch(
    err) {
                    case 
    'BrowserNotSupported':
                        
    showMessage('Your browser does not support HTML5 file uploads!');
                        break;
                    case 
    'TooManyFiles':
                        
    alert('Too many files! Please select 5 at most! (configurable)');
                        break;
                    case 
    'FileTooLarge':
                        
    alert(file.name+' is too large! Please upload files up to 2mb (configurable).');
                        break;
                    default:
                        break;
                }
            },
            
            
    // Called before each upload is started
            
    beforeEach: function(file){
                if(!
    file.type.match(/^image\//)){
                    
    alert('Only images are allowed!');
                    
                    
    // Returning false will cause the
                    // file to be rejected
                    
    return false;
                }
            },
            
            
    uploadStarted:function(ifilelen){
                
    createImage(file);
            },
            
            
    progressUpdated: function(ifileprogress) {
                $.
    data(file).find('.progress').width(progress);
            }
             
        });
        
        var 
    template '<div class="preview">'+
                            
    '<span class="imageHolder">'+
                                
    '<img />'+
                                
    '<span class="uploaded"></span>'+
                            
    '</span>'+
                            
    '<div class="progressHolder">'+
                                
    '<div class="progress"></div>'+
                            
    '</div>'+
                        
    '</div>'
        
        
        function 
    createImage(file){

            var 
    preview = $(template), 
                
    image = $('img'preview);
                
            var 
    reader = new FileReader();
            
            
    image.width 100;
            
    image.height 100;
            
            
    reader.onload = function(e){
                
                
    // e.target.result holds the DataURL which
                // can be used as a source of the image:
                
                
    image.attr('src',e.target.result);
            };
            
            
    // Reading the file as a DataURL. When finished,
            // this will trigger the onload function above:
            
    reader.readAsDataURL(file);
            
            
    message.hide();
            
    preview.appendTo(dropbox);
            
            
    // Associating a preview container
            // with the file, using jQuery's $.data():
            
            
    $.data(file,preview);
        }

        function 
    showMessage(msg){
            
    message.html(msg);
        }

    }); 
    La pagina post_file.php è la seguente:
    Codice PHP:
    <?php
    // If you want to ignore the uploaded files, 
    // set $demo_mode to true;
    $demo_mode false;
    $upload_dir './$nCartella/';
    $allowed_ext = array('jpg','jpeg','png','gif');


    if(
    strtolower($_SERVER['REQUEST_METHOD']) != 'post'){
        
    exit_status('Error! Wrong HTTP method!');
    }


    if(
    array_key_exists('pic',$_FILES) && $_FILES['pic']['error'] == ){
        
        
    $pic $_FILES['pic'];

        if(!
    in_array(get_extension($pic['name']),$allowed_ext)){
            
    exit_status('Only '.implode(',',$allowed_ext).' files are allowed!');
        }    

        if(
    $demo_mode){
            
            
    // File uploads are ignored. We only log them.
            
            
    $line implode('        ', array( date('r'), $_SERVER['REMOTE_ADDR'], $pic['size'], $pic['name']));
            
    file_put_contents('log.txt'$line.PHP_EOLFILE_APPEND);
            
            
    exit_status('Uploads are ignored in demo mode.');
        }
        
        
        
    // Move the uploaded file from the temporary 
        // directory to the uploads folder:
        
        
    if(move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])){
            
    exit_status('File was uploaded successfuly!');
        }
        
    }

    exit_status('Something went wrong with your upload!');


    // Helper functions

    function exit_status($str){
        echo 
    json_encode(array('status'=>$str));
        exit;
    }

    function 
    get_extension($file_name){
        
    $ext explode('.'$file_name);
        
    $ext array_pop($ext);
        return 
    strtolower($ext);
    }
    ?>
    Non riesco a capire perchè non mi carica la foto dentro la cartella creata dall'utente inserendo il nome nella pagine nuovoAlbum.
    Qualcuno riesce a darmi una mano? Grazie

  2. #2
    Di primo acchitto, e senza avere visto tutto il codice PHP, mi sembra di poterti dire che il codice HTML è errato in quanto il doc-type è errato.
    Per inizializzare una pagina HTLM5, in testa devi scrivere quanto segue:
    codice:
    <!doctype html>
    Così come lo hai scritto te, sarebbe errato anche in HTML e XHTML, in quanto non specifichi il doc-type.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    6
    Ho provato a cambiare ma il risultato non cambia. Il fatto è che se cambio nel file post_file.php il percorso in cui fare l'upload del file (ovvero $upload_dir) e metto $upload_dir = './'; mi carica le foto nella cartella in cui sono presenti tutti i file. Io vorrei che venisse caricata la foto nella cartella creata nel file nuovoAlbum.php con nome $nCartella. Per cui ho provato a mettere $upload_dir = './$nCartella/'; ma con questo comando non mi carica la foto. Qualcuno ha suggerimenti su come fare?

  4. #4
    Allora... procediamo per gradi.
    Nel secondo script che hai postato, modifica il codice PHP come segue:
    Codice PHP:
    <?php 
         
    //seleziono dove mettere le nuove cartelle 
        
    chdir("./"); 
        
    opendir("."); 
        
    $nCartella $_GET["nome"]; 
        
    mkdir($nCartella"0755") OR DIE ("Impossibile Creare la cartella"); 
        echo 
    "La cartella " $nCartella " e' stata creata!"
    ?>
    Non ho capito infatti se il problema risiede nel fatto che la cartella non viene creata, oppure se lo script non riesce a salvarci dentro i file!

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Peraltro, noto che ti trasporti una variabile:
    Codice PHP:
    $_GET["nome"
    Che non capisco dove venga assegnata (in quale script).

    Peraltro..... vedo che usi chdir() e opendir().
    Ma per fare cosa visto che mkdir() funzona semplicemente con il percorso assoluto alla directory (con permessi di scrittura) dove andare a creare la cartella stessa?

    Quindi, riscrivi lo script di prima così:
    Codice PHP:
    <?php  
         
    // recupero il nome della cartella richiesto dall'utente
        
    $nCartella $_GET["nome"];  
        
    mkdir("percorso/completo/{$nCartella}""0755") OR DIE ("Impossibile Creare la cartella");  
        echo 
    "La cartella " $nCartella " e' stata creata!";  
    ?>
    Altro consiglio: e se due utenti diversi volessero creare una cartella con lo stesso nome???
    Io inserirei anche un qualcosa per diversificare i nomi.
    Qualcosa tipo "nome-cartella-richiesto-dall'utente"+"data-della-richiesta".

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    6
    Grazie delle risposte. Scusa se non sono stato chiaro. In pratica la cartella viene creata ma i file non li carica dentro la cartella creata. Il problema penso sia nel passaggio di variabili tra il file nuovoAlbum.php e poi il file collegato a index.php attraverso uno script js il quale contiene il percorso dove caricare le foto..

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    6
    Per quanto riguarda il fatto delle cartelle per ogni utente a me non interessa perche le foto saranno caricate solo da un utente per ora.. Il GET l'ho usato perché stavo cercando di passare il nome della cartella al file post_file.php ma non ci riuscivo.

  8. #8
    vedi?
    il problema potrebbe essere lì.
    Hai postato tutto il codice ma forse non hai pensato alla logica dello script.
    Ripartiamo da zero.

    C'è una pagina in cui un utente sceglie un nome di una cartella dove fare l'upload delle foto?
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2012
    Messaggi
    6
    Nella pagina nuovoAlbum.php l'utente inserisce un testo che sarà poi il nome della cartella che verrà creata poi nella pagina index.php attraverso questo codice:
    Codice PHP:
    $nCartella $_GET["nome"]; 
    mkdir($nCartella,"0777"); 
    echo 
    "La cartella " $nCartella " e' stata creata!"?> 
    come puoi vedere dal codice della pagina index.php, quest'ultima pagina è collegata al file script.js che contiene questo codice che dice di andare alla pagina post_file.php dove fare poi l'upload delle immagini (attraverso un drag and drop):
    Codice PHP:
    url'post_file.php' 
    Il problema penso che stia in questa pagina in quanto non riesco a dirgli che voglio che mi carichi le immagini nella cartella $nCartella e non nella cartella in cui è presente il file post_file.php. Ho provato con il seguente codice:
    Codice PHP:
    $upload_dir './$nCartella/'
    ma senza effetto nel senso che le foto me le carica nella cartella ./ e non nella cartella './$nCartella/' come vorrei io. Credo che il problema sia questo, ovvero che a quel file non gli arriva il valore della variabile $nCartella e quindi non sa dove caricare la foto.
    Spero di essere stato chiaro!

  10. #10
    Originariamente inviato da PiermaL
    Codice PHP:
    $upload_dir './$nCartella/'
    La cartella viene creata nella root del sito?
    Se sì, prova a scrivere così:
    Codice PHP:
    $upload_dir '$nCartella/'
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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.