-
-
Save aznoisib/26afeaeb099b672420fae289e259900c to your computer and use it in GitHub Desktop.
HTML5: files upload
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!-- via control upload --> | |
<input type="file" id="your-files" multiple> | |
<script> | |
var control = document.getElementById("your-files"); | |
control.addEventListener("change", function(event) { | |
// When the control has changed, there are new files | |
var i = 0, | |
files = control.files, | |
len = files.length; | |
for (; i < len; i++) { | |
console.log("Filename: " + files[i].name); | |
console.log("Type: " + files[i].type); | |
console.log("Size: " + files[i].size + " bytes"); | |
} | |
}, false); | |
</script> | |
<!-- drag and drop upload --> | |
<div id="your-files"></div> | |
<script> | |
var target = document.getElementById("your-files"); | |
target.addEventListener("dragover", function(event) { | |
event.preventDefault(); | |
}, false); | |
target.addEventListener("drop", function(event) { | |
// cancel default actions | |
event.preventDefault(); | |
var i = 0, | |
files = event.dataTransfer.files, | |
len = files.length; | |
for (; i < len; i++) { | |
console.log("Filename: " + files[i].name); | |
console.log("Type: " + files[i].type); | |
console.log("Size: " + files[i].size + " bytes"); | |
} | |
}, false); | |
</script> | |
<!-- Ajax file upload --> | |
<script> | |
// create a form with a couple of values | |
var form = new FormData(); | |
form.append("name", "Nicholas"); | |
form.append("photo", control.files[0]); | |
// send via XHR - look ma, no headers being set! | |
var xhr = new XMLHttpRequest(); | |
xhr.onload = function() { | |
console.log("Upload complete."); | |
}; | |
xhr.open("post", "/entrypoint", true); | |
xhr.send(form); | |
</script> | |
<!-- file reading --> | |
<script> | |
var reader = new FileReader(); | |
reader.onload = function(event) { | |
var contents = event.target.result; | |
console.log("File contents: " + contents); | |
}; | |
reader.onerror = function(event) { | |
console.error("File could not be read! Code " + event.target.error.code); | |
}; | |
reader.readAsText(file); | |
</script> | |
<!-- Uri file reading --> | |
<script> | |
var reader = new FileReader(); | |
reader.onload = function(event) { | |
var dataUri = event.target.result, | |
img = document.createElement("img"); | |
img.src = dataUri; | |
document.body.appendChild(img); | |
}; | |
reader.onerror = function(event) { | |
console.error("File could not be read! Code " + event.target.error.code); | |
}; | |
reader.readAsDataURL(file); | |
</script> | |
<!-- Uri file reading into CANVAS --> | |
<script> | |
var reader = new FileReader(); | |
reader.onload = function(event) { | |
var dataUri = event.target.result, | |
context = document.getElementById("mycanvas").getContext("2d"), | |
img = new Image(); | |
// wait until the image has been fully processed | |
img.onload = function() { | |
context.drawImage(img, 100, 100); | |
}; | |
img.src = dataUri; | |
}; | |
reader.onerror = function(event) { | |
console.error("File could not be read! Code " + event.target.error.code); | |
}; | |
reader.readAsDataURL(file); | |
</script> | |
<!-- File reading progress --> | |
<script> | |
var reader = new FileReader(), | |
progressNode = document.getElementById("my-progress"); | |
reader.onprogress = function(event) { | |
if (event.lengthComputable) { | |
progressNode.max = event.total; | |
progressNode.value = event.loaded; | |
} | |
}; | |
reader.onloadend = function(event) { | |
var contents = event.target.result, | |
error = event.target.error; | |
if (error != null) { | |
console.error("File could not be read! Code " + error.code); | |
} else { | |
progressNode.max = 1; | |
progressNode.value = 1; | |
console.log("Contents: " + contents); | |
} | |
}; | |
reader.readAsText(file); | |
</script> | |
<!-- File reading ERRORS handling --> | |
<script> | |
var reader = new FileReader(); | |
reader.onloadend = function(event) { | |
var contents = event.target.result, | |
error = event.target.error; | |
if (error != null) { | |
switch (error.code) { | |
case error.ENCODING_ERR: | |
console.error("Encoding error!"); | |
break; | |
case error.NOT_FOUND_ERR: | |
console.error("File not found!"); | |
break; | |
case error.NOT_READABLE_ERR: | |
console.error("File could not be read!"); | |
break; | |
case error.SECURITY_ERR: | |
console.error("Security issue with file!"); | |
break; | |
default: | |
console.error("I have no idea what's wrong!"); | |
} | |
} else { | |
progressNode.max = 1; | |
progressNode.value = 1; | |
console.log("Contents: " + contents); | |
} | |
}; | |
reader.readAsText(file); | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment