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.';}?>