Skip to content

Instantly share code, notes, and snippets.

@slowkow
Forked from junjchen/gzip-file-ajax.html
Created August 9, 2018 12:51
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save slowkow/9e65fff2b6a4bfb61fcfe316f27b5e9d to your computer and use it in GitHub Desktop.
Save slowkow/9e65fff2b6a4bfb61fcfe316f27b5e9d to your computer and use it in GitHub Desktop.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.0.0-rc1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/pako/1.0.1/pako.min.js"></script>
</head>
<body>
<form id="my-form">
<input type="file" name="file">
<input type="submit">
</form>
</body>
<script>
$(function() {
$('#my-form').on('submit', function(evt) {
evt.preventDefault();
var $input = $(this).find('input[type=file]');
var file = $input.prop('files')[0];
var reader = new FileReader();
reader.onload = function() {
var convertedData = new Uint8Array(reader.result);
var zipped = pako.gzip(convertedData, {to: 'Uint8Array'});
var convertedZip = zipped.buffer;
var blob = new Blob([convertedZip], {type: file.type});
var formData = new FormData();
formData.append($input.prop('name'), blob, file.name);
formData.append('test', 'ok');
$.ajax({
url: 'postfile',
type: 'POST',
data: formData,
contentType: false,
processData: false,
headers: {
'Content-Encoding': 'gzip'
}
}).done(function(data) {
console.log(data);
}).fail(function(err) {
console.error(err);
});
}
reader.readAsArrayBuffer(file);
})
});
</script>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment