Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169

    Ridimensionamento immagini lato client

    Ciao, ho questo magnifico script che semplicemente da LATO CLIENT ridimensiona l'immagine o le immagini e poi fà l'upload in una cartella e fino a qui tutto ok ! però perchè con i dispositivi mobili tipo android non và, anzi funziona a metà praticamente nella cartella mi ritrovo un immagine vuota di 1kb ? qualcuno sa spiegarmi il perchè e magari una soluzione ?

    ecco il codice

    index.html
    codice HTML:
          <input type="file" name="filesToUpload[]" id="filesToUpload" multiple="multiple" />		<output id="filesInfo"></output>
    
    
    <script language="javascript" >
    		// REIZE - UPLOAD
    if (window.File && window.FileReader && window.FileList && window.Blob) {    document.getElementById('filesToUpload').onchange = function(){        var files = document.getElementById('filesToUpload').files;        for(var i = 0; i < files.length; i++) {            resizeAndUpload(files[i]);        }    };} else {    alert('The File APIs are not fully supported in this browser.');} function resizeAndUpload(file) {var reader = new FileReader();    reader.onloadend = function() {     var tempImg = new Image();    tempImg.src = reader.result;    tempImg.onload = function() {         var MAX_WIDTH = 800;        var MAX_HEIGHT = 600;        var tempW = tempImg.width;        var tempH = tempImg.height;        if (tempW > tempH) {            if (tempW > MAX_WIDTH) {               tempH *= MAX_WIDTH / tempW;               tempW = MAX_WIDTH;            }        } else {            if (tempH > MAX_HEIGHT) {               tempW *= MAX_HEIGHT / tempH;               tempH = MAX_HEIGHT;            }        }         var canvas = document.createElement('canvas');        canvas.width = tempW;        canvas.height = tempH;        var ctx = canvas.getContext("2d");        ctx.drawImage(this, 0, 0, tempW, tempH);        var dataURL = canvas.toDataURL("image/jpeg");         var xhr = new XMLHttpRequest();        xhr.onreadystatechange = function(ev){            document.getElementById('filesInfo').innerHTML = 'Done!';        };         xhr.open('POST', 'uploadResized.php', true);        xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");        var data = 'image=' + dataURL;        xhr.send(data);      }    }   reader.readAsDataURL(file);}
    
    
    </script>


    uploadResized.php

    Codice PHP:
    <?
    if ($_POST) {    define('UPLOAD_DIR''uploads/');    $img $_POST['image'];    $img str_replace('data:image/jpeg;base64,'''$img);    $img str_replace(' ''+'$img);    $data base64_decode($img);    $file UPLOAD_DIR uniqid() . '.jpg';    $success file_put_contents($file$data);    print $success $file 'Unable to save the file.';}?>

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    E' probabile che il tuo cell non riesca ad interpretare correttamente il codice javascript formattato in quel modo, spendi un pochino di tempo per mettere i giusti "a capo" quando necessario.
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    in oltre non è detto che filereader sia supportato
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169
    br1 grazie per la risposta ma quando copio ed incollo il codice in questo forum mi mette tutti gli a capo sbagliati non so perchè comunque ho provato anche a sistemare un pò gli a capo, come ta tuo consiglio ma non cambia nulla.

    per cavicchiandrea e se fosse proprio il filereader che non è supportato dal mobile/android cosa potrei utilizzare ?

    Codice PHP:
    <script language="javascript" >
            
    // RESIZE AND UPLOAD
    if (window.File && window.FileReader && window.FileList && window.Blob) {    document.getElementById('filesToUpload').onchange = function(){        var files document.getElementById('filesToUpload').files;        for(var 0files.lengthi++) {            resizeAndUpload(files[i]);        }    };} else {    alert('The File APIs are not fully supported in this browser.');} function resizeAndUpload(file) {var reader = new FileReader();    reader.onloadend = function() {     var tempImg = new Image();    tempImg.src reader.result;    tempImg.onload = function() {         var MAX_WIDTH 800;        var MAX_HEIGHT 600;        var tempW tempImg.width;        var tempH tempImg.height;        if (tempW tempH) {            if (tempW MAX_WIDTH) {               tempH *= MAX_WIDTH tempW;               tempW MAX_WIDTH;            }        } else {            if (tempH MAX_HEIGHT) {               tempW *= MAX_HEIGHT tempH;               tempH MAX_HEIGHT;            }        }         var canvas document.createElement('canvas');        canvas.width tempW;        canvas.height tempH;        var ctx canvas.getContext("2d");        ctx.drawImage(this00tempWtempH);        var dataURL canvas.toDataURL("image/jpeg");         var xhr = new XMLHttpRequest();        xhr.onreadystatechange = function(ev){            document.getElementById('filesInfo').innerHTML 'Upload OK!';        };         xhr.open('POST''UploadImages.php'true);        xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");        var data 'image=' dataURL;        xhr.send(data);      }    }   reader.readAsDataURL(file);}
    </script> 

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169
    <script language="javascript" >


    // RESIZE AND UPLOAD


    if (window.File && window.FileReader && window.FileList && window.Blob) {
    document.getElementById('filesToUpload').onchange = function(){
    var files = document.getElementById('filesToUpload').files;
    for(var i = 0; i < files.length; i++) {
    resizeAndUpload(files[i]);
    }
    };
    } else {
    alert('The File APIs are not fully supported in this browser.');
    }

    function resizeAndUpload(file) {
    var reader = new FileReader();
    reader.onloadend = function() {

    var tempImg = new Image();
    tempImg.src = reader.result;
    tempImg.onload = function() {

    var MAX_WIDTH = 800;
    var MAX_HEIGHT = 600;
    var tempW = tempImg.width;
    var tempH = tempImg.height;
    if (tempW > tempH) {
    if (tempW > MAX_WIDTH) {
    tempH *= MAX_WIDTH / tempW;
    tempW = MAX_WIDTH;
    }
    } else {
    if (tempH > MAX_HEIGHT) {
    tempW *= MAX_HEIGHT / tempH;
    tempH = MAX_HEIGHT;
    }
    }

    var canvas = document.createElement('canvas');
    canvas.width = tempW;
    canvas.height = tempH;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(this, 0, 0, tempW, tempH);
    var dataURL = canvas.toDataURL("image/jpeg");

    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(ev){
    document.getElementById('filesInfo').innerHTML = 'Upload OK!';
    };

    xhr.open('POST', 'UploadImages.php', true);
    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    var data = 'image=' + dataURL;
    xhr.send(data);
    }

    }
    reader.readAsDataURL(file);
    }


    </script>

  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,132
    Non credo ci sia un alternativa, pertanto direi nulla
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169
    credo che supporti il filereader android perchè se faccio questo script per l'anteprima delle immagini funziona perfettamente:




    <script language="javascript" >


    // ANTEPRIMA IMMAGINE/I SELEZIONATE

    function fileSelect(evt) {
    if (window.File && window.FileReader && window.FileList && window.Blob) {
    var files = evt.target.files;

    var result = '';
    var file;
    for (var i = 0; file = files[i]; i++) {
    // if the file is not an image, continue
    if (!file.type.match('image.*')) {
    continue;
    }

    reader = new FileReader();
    reader.onload = (function (tFile) {
    return function (evt) {
    var div = document.createElement('div');
    div.innerHTML = '<img style="width:120px; float:left; margin-right:2px;" src="' + evt.target.result + '" />';
    document.getElementById('filesInfo2').appendChild( div);
    };
    }(file));
    reader.readAsDataURL(file);
    }
    } else {
    alert('The File APIs are not fully supported in this browser.');
    }
    }

    document.getElementById('filesToUpload').addEventL istener('change', fileSelect, false);


    </script>

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2011
    Messaggi
    169
    allora ho trovato il problema che non è in javascript ma è in php, posto il codice per intero per chi ne avesse bisogno:

    Index.html




    <!-- START RESIZE AND UPLOAD IMAGES -->


    <input type="file" name="filesToUpload[]" id="filesToUpload" multiple="multiple" />
    <output id="filesInfo"></output> <!-- Risultato Upload -->
    <br />
    <br />
    <output id="filesInfo2"></output> <!-- Anteprima Immagini -->




    <script language="javascript" >


    // RESIZE AND UPLOAD


    if (window.File && window.FileReader && window.FileList && window.Blob) {
    document.getElementById('filesToUpload').onchange = function(){
    var files = document.getElementById('filesToUpload').files;
    for(var i = 0; i < files.length; i++) {
    resizeAndUpload(files[i]);
    }
    };
    } else {
    alert('The File APIs are not fully supported in this browser.');
    }

    function resizeAndUpload(file) {
    var reader = new FileReader();
    reader.onloadend = function() {

    var tempImg = new Image();
    tempImg.src = reader.result;
    tempImg.onload = function() {

    var MAX_WIDTH = 800;
    var MAX_HEIGHT = 600;
    var tempW = tempImg.width;
    var tempH = tempImg.height;
    if (tempW > tempH) {
    if (tempW > MAX_WIDTH) {
    tempH *= MAX_WIDTH / tempW;
    tempW = MAX_WIDTH;
    }
    } else {
    if (tempH > MAX_HEIGHT) {
    tempW *= MAX_HEIGHT / tempH;
    tempH = MAX_HEIGHT;
    }
    }

    var canvas = document.createElement('canvas');
    canvas.width = tempW;
    canvas.height = tempH;
    var ctx = canvas.getContext("2d");
    ctx.drawImage(this, 0, 0, tempW, tempH);
    var dataURL = canvas.toDataURL("image/jpeg");


    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function(ev){
    document.getElementById('filesInfo').innerHTML = 'Upload OK!';
    };

    xhr.open('POST', 'UploadImages.php', true);
    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    var data = 'image=' + dataURL;
    xhr.send(data);
    }

    }
    reader.readAsDataURL(file);
    }


    </script>




    <script language="javascript" >


    // ANTEPRIMA IMMAGINE/I SELEZIONATE

    function fileSelect(evt) {
    if (window.File && window.FileReader && window.FileList && window.Blob) {
    var files = evt.target.files;

    var result = '';
    var file;
    for (var i = 0; file = files[i]; i++) {
    // if the file is not an image, continue
    if (!file.type.match('image.*')) {
    continue;
    }

    reader = new FileReader();
    reader.onload = (function (tFile) {
    return function (evt) {
    var div = document.createElement('div');
    div.innerHTML = '<img style="width:120px; float:left; margin-right:2px;" src="' + evt.target.result + '" />';
    document.getElementById('filesInfo2').appendChild( div);
    };
    }(file));
    reader.readAsDataURL(file);
    }
    } else {
    alert('The File APIs are not fully supported in this browser.');
    }
    }

    document.getElementById('filesToUpload').addEventL istener('change', fileSelect, false);


    </script>


    <!-- END RESIZE AND UPLOAD IMAGES -->




    UploadImages.php di seguito per il funzionamento su desktop

    < ?php


    if ($_POST) {
    define('UPLOAD_DIR', 'uploads/');
    $img = $_POST['image'];
    $img = str_replace('data:image/jpeg;base64,', '', $img); // cambia solo questo
    $img = str_replace(' ', '+', $img);
    $data = base64_decode($img);
    $file = UPLOAD_DIR . uniqid() . '.jpg';
    $success = file_put_contents($file, $data);
    print $success ? $file : 'Unable to save the file.';
    }


    ? >


    oppure UploadImages.php di seguito per il funzionamento su Android/Mobile

    < ?php


    if ($_POST) {
    define('UPLOAD_DIR', 'uploads/');
    $img = $_POST['image'];
    $img = str_replace('data:image/png;base64,', '', $img); // cambia solo questo
    $img = str_replace(' ', '+', $img);
    $data = base64_decode($img);
    $file = UPLOAD_DIR . uniqid() . '.jpg';
    $success = file_put_contents($file, $data);
    print $success ? $file : 'Unable to save the file.';
    }


    ? >



    ovvio che bisogna creare la cartella uploads

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.