HTML5 file API + ajax file upload sample
drag & drop area
image preview area
ajax request response area
uploaded files
view source
JavaScript
var $files = [];
XMLHttpRequest.prototype.send = function (data) {
return this.sendAsBinary(data);
};
function filesSelected(files) {
for (var i = 0; i < files.length; i++) {
var file = files[i];
$files.push(file);
var reader = new FileReader();
reader.onload = function(event){
var img = document.createElement('img');
img.src = reader.result;
img.width = img.height = 32;
$('#preview').append(img);
upload(event);
};
reader.readAsDataURL(file);
};
}
function onFileOver(e) {
e.preventDefault();
e.stopPropagation();
}
function onFileDrop(e) {
e.preventDefault();
e.stopPropagation();
filesSelected(e.dataTransfer.files);
}
function upload(e){
e.preventDefault();
e.stopPropagation();
for (var i = 0; i < $files.length; i++){
var file = $files[i];
var reader = new FileReader();
reader.onload = function(event){
$.ajax({
url : '/upload',
type : 'post',
data : reader.result,
dataType : 'json',
success : function(data){
$.each(data, function(index,elem){
if (elem.match(/saved as (.*)$/)) {
var m = RegExp.$1;
$('<a>').attr('href', '/' + m).text(m).wrap('<p>').appendTo('#response');
} else {
$('<p>').text(elem).appendTo('#response');
}
});
$('.indexes').show();
}
});
};
reader.readAsBinaryString(file);
}
}
$(document).ready(function(){
$('.indexes').hide();
});
CSS
HTML
ページのソースを表示 : Ctrl+U , DevTools : F12
view-source:https://hi0a.com/demo/-html5/html5-drag-upload/
ABOUT
hi0a.com 「ひまアプリ」は無料で遊べるミニゲームや便利ツールを公開しています。
プログラミング言語の動作デモやWEBデザイン、ソースコード、フロントエンド等の開発者のための技術を公開しています。
必要な機能の関数をコピペ利用したり勉強に活用できます。
プログラムの動作サンプル結果は画面上部に出力表示されています。
環境:最新のブラウザ GoogleChrome / Windows / Android / iPhone 等の端末で動作確認しています。
画像素材や音素材は半分自作でフリー素材配布サイトも利用しています。LINK参照。
動く便利なものが好きなだけで技術自体に興味はないのでコードは汚いです。
途中放置や実験状態、仕様変更、API廃止等で動かないページもあります。