3
<title>Multiple File Upload with Progress Tracking and a Transparent Overlay Upload Button</title>
4
<script type="text/javascript" src="../../../build/yui/yui-min.js"></script>
5
<script type="text/javascript" src="../../../build/uploader-deprecated/uploader-deprecated.js"></script>
14
.yui3-progressbar .yui3-progressbar-label {
22
.yui3-progressbar .yui3-progressbar-content {
26
background:url('assets/active.gif') left center no-repeat;
30
.yui3-progressbar .yui3-progressbar-slider {
36
background:url('assets/background.gif') left center no-repeat;
43
<h1>Multiple File Upload with Progress Tracking and a Transparent Overlay Upload Button</h1>
44
<div id="uploaderContainer">
45
<div id="uploaderOverlay" style="position:absolute; z-index:2"></div>
46
<div id="selectFilesLink" style="z-index:1"><a id="selectLink" href="#">Select Files</a></div>
48
<div id="uploadFilesLink"><a id="uploadLink" href="#">Upload Files</a></div>
51
<table id="filenames" style="border-width:1px; border-style:solid; padding:5px;">
52
<tr><td>Filename</td><td>File size</td><td>Percent uploaded</td></tr>
60
gallery: 'gallery-2010.06.30-19-54'}).use('base', 'event', 'node', 'swf', 'uploader-deprecated', 'gallery-progressbar', function (Y) {
66
var overlayRegion = Y.one("#selectLink").get('region');
68
Y.one("#uploaderOverlay").set("offsetWidth", overlayRegion.width);
69
Y.one("#uploaderOverlay").set("offsetHeight", overlayRegion.height);
71
uploader = new Y.Uploader({boundingBox:"#uploaderOverlay",
72
swfURL:"../../../build/uploader-deprecated/assets/uploader.swf",
76
uploader.on("uploaderReady", setupUploader);
77
uploader.on("fileselect", fileSelect);
78
uploader.on("uploadprogress", updateProgress);
79
uploader.on("uploadcomplete", uploadComplete);
82
Y.on("domready", init);
85
var setupUploader = function (event) {
86
uploader.set("multiFiles", true);
87
uploader.set("simLimit", 3);
88
uploader.set("log", true);
90
var fileFilters = new Array({description:"Images", extensions:"*.jpg;*.png;*.gif"},
91
{description:"Videos", extensions:"*.avi;*.mov;*.mpg"});
93
uploader.set("fileFilters", fileFilters);
96
var fileSelect = function (event) {
97
Y.log("File was selected, parsing...");
98
var fileData = event.fileList;
100
for (var key in fileData) {
101
var output = "<tr><td>" + fileData[key].name + "</td><td>" + fileData[key].size + "</td><td><div id='div_" + fileData[key].id + "'></div></td></tr>\n";
102
Y.one("#filenames").append(output);
104
var progressBar = new Y.ProgressBar({id:"pb_" + fileData[key].id, layout : '<div class="{labelClass}"></div><div class="{sliderClass}"></div>'});
105
progressBar.render("#div_" + fileData[key].id);
106
progressBar.set("progress", 0);
110
var updateProgress = function (event) {
111
var pb = Y.Widget.getByNode("#pb_" + event.id);
112
pb.set("progress", Math.round(100 * event.bytesLoaded / event.bytesTotal));
115
var uploadComplete = function (event) {
116
var pb = Y.Widget.getByNode("#pb_" + event.id);
117
pb.set("progress", 100);
120
var uploadFile = function (event) {
121
uploader.uploadAll("http://www.yswfblog.com/upload/upload_simple.php");
124
Y.one("#uploadFilesLink").on("click", uploadFile);