Ho un modulo di caricamento del file di lavoro che utilizza XMLHttpRequest 2 per caricare i file su Transloadit (un servizio di elaborazione file). Gli eventi di avanzamento vengono attivati correttamente in Firefox e Chrome, sia per Desktop che per Android. Ma il browser azionario Android (4.0) non attiva questi eventi, quindi la mia barra di avanzamento non funziona per quegli utenti del mio sito. XHR2 e ProgressEvent sono supportati in Android dal 3.0, quindi non so cosa sta succedendo.Nessun progresso XMLHttpRequest 2 nel browser di serie Android
Il codice è:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Upload test</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link href="/assets/application.css" media="all" rel="stylesheet" type="text/css" /> <!-- twitter bootstrap -->
<script type="text/javascript">
var onprogress = function(e)
{
var $status = $('.status');
$status.text('onprogress: ' + (e.loaded/e.total) * 75 + '<br>');
if (e.lengthComputable) {
setProgress((e.loaded/e.total) * 75);
}
}
var setProgress = function(percent) {
percent = percent+'%';
var $progressBar = $('.progress .bar');
var $status = $('.status');
$progressBar.css('width', percent);
$progressBar.text(percent);
$status.text(percent);
};
var createAttachment = function(file) {
var params = {"blocking": true,"auth":{"key":"XXX"},"template_id":"XXX"}
var xhr = new XMLHttpRequest();
var data = new FormData();
data.append('params', JSON.stringify(params));
data.append('attachment[file]', file);
var evtReceiver = xhr.upload || xhr;
evtReceiver.addEventListener('progress', onprogress, false);
xhr.onload = function(e) {
var resp = JSON.parse(e.target.response)
$('.image').append($('<img src="' + resp.results['android-thumb'][0].url + '">'))
setProgress(100);
};
xhr.open('POST', 'http://api2.transloadit.com/assemblies', true);
xhr.send(data);
};
$(document).ready(function() {
$('input[type=file]').on('change', function(event) {
createAttachment(event.target.files[0]);
});
});
</script>
</head>
<body>
<input type="file" name="my_file">
<div class="progress progress-striped active">
<div class="bar" style="width: 0;"></div>
</div>
<div class="status"></div>
<div class="image"></div>
</body>
</html>
Eventuali duplicati di [Getting XMLHttpRequest Progress da PHP Script] (http://stackoverflow.com/questions/3990933/getting-xmlhttprequest-progress-from -php-script) –