Skip to content
Snippets Groups Projects
Commit 23f7bc5a authored by Jared Hancock's avatar Jared Hancock
Browse files

file: Propery support IE10 for file uploads

parent a7f98bb4
Branches
Tags
No related merge requests found
...@@ -48,13 +48,17 @@ ...@@ -48,13 +48,17 @@
node.find('.trash').hide(); node.find('.trash').hide();
}, },
beforeSend: function (file, i, reader) { beforeSend: function (file, i, reader) {
var URL = window.webkitURL || window.URL;
this.uploads.some(function(e) { this.uploads.some(function(e) {
if (e.data('file') == file) { if (e.data('file') == file) {
if (file.type.indexOf('image/') === 0 && file.size < 1e6) { if (file.type.indexOf('image/') === 0 && file.size < 1e6) {
e.find('.preview').attr('src', 'data:' + file.type + ';base64,' + var img = e.find('.preview')
btoa(reader.result)).tooltip({items:'img', .tooltip({items:'img',
tooltipClass: 'tooltip-preview', tooltipClass: 'tooltip-preview',
content:function(){ return $(this).clone().wrap('<div>'); }}); content:function(){ return $(this).clone().wrap('<div>'); }}
)
.get()[0];
img.src = URL.createObjectURL(file);
} }
return true; return true;
} }
...@@ -198,6 +202,8 @@ ...@@ -198,6 +202,8 @@
cancelUpload: function(node) { cancelUpload: function(node) {
if (node.data('xhr')) { if (node.data('xhr')) {
node.data('xhr').abort(); node.data('xhr').abort();
var img = node.find('.preview').get()[0];
if (img) (window.webkitURL || window.URL).revokeObjectURL(img.src);
} }
return this.deleteNode(node, false); return this.deleteNode(node, false);
}, },
...@@ -205,7 +211,7 @@ ...@@ -205,7 +211,7 @@
var message = $.fn.filedropbox.messages[err], var message = $.fn.filedropbox.messages[err],
filenode = this.findNode(file); filenode = this.findNode(file);
if (file instanceof File) { if (file instanceof File) {
message = '<b>' + file.name + '</b><br/>' + message; message = '<b>' + file.name + '</b><br/>' + message + '<br/>' + status;
} }
$.sysAlert(__('File Upload Error'), message); $.sysAlert(__('File Upload Error'), message);
if (filenode) this.cancelUpload(filenode); if (filenode) this.cancelUpload(filenode);
...@@ -372,8 +378,9 @@ ...@@ -372,8 +378,9 @@
function getBuilder(filename, filedata, mime, boundary) { function getBuilder(filename, filedata, mime, boundary) {
var dashdash = '--', var dashdash = '--',
crlf = '\r\n', crlf = '\r\n',
builder = '', builder = [],
paramname = opts.paramname; paramname = opts.paramname,
Blob = window.WebKitBlob || window.Blob;
if (opts.data) { if (opts.data) {
var params = $.param(opts.data).replace(/\+/g, '%20').split(/&/); var params = $.param(opts.data).replace(/\+/g, '%20').split(/&/);
...@@ -387,14 +394,14 @@ ...@@ -387,14 +394,14 @@
return; return;
} }
builder += dashdash; builder.push(dashdash
builder += boundary; + boundary
builder += crlf; + crlf
builder += 'Content-Disposition: form-data; name="' + name + '"'; + 'Content-Disposition: form-data; name="' + name + '"'
builder += crlf; + crlf
builder += crlf; + crlf
builder += val; + val
builder += crlf; + crlf);
}); });
} }
...@@ -402,25 +409,24 @@ ...@@ -402,25 +409,24 @@
paramname = paramname(filename); paramname = paramname(filename);
} }
builder += dashdash; builder.push(dashdash
builder += boundary; + boundary
builder += crlf; + crlf
builder += 'Content-Disposition: form-data; name="' + (paramname||"") + '"'; + 'Content-Disposition: form-data; name="' + (paramname||"") + '"'
builder += '; filename="' + encodeURIComponent(filename) + '"'; + '; filename="' + encodeURIComponent(filename) + '"'
builder += crlf; + crlf
builder += 'Content-Type: ' + mime; + 'Content-Type: ' + mime
builder += crlf; + crlf
builder += crlf; + crlf);
builder += filedata; builder.push(filedata);
builder += crlf; builder.push(crlf
+ dashdash
builder += dashdash; + boundary
builder += boundary; + dashdash
builder += dashdash; + crlf);
builder += crlf; return new Blob(builder);
return builder;
} }
function progress(e) { function progress(e) {
...@@ -587,7 +593,7 @@ ...@@ -587,7 +593,7 @@
return send(e); return send(e);
}; };
reader.readAsBinaryString(files[fileIndex]); reader.readAsArrayBuffer(files[fileIndex]);
} else { } else {
filesRejected++; filesRejected++;
...@@ -665,14 +671,14 @@ ...@@ -665,14 +671,14 @@
xhr.setRequestHeader(k, v); xhr.setRequestHeader(k, v);
}); });
xhr.sendAsBinary(builder); xhr.send(builder);
global_progress[global_progress_index] = 0; global_progress[global_progress_index] = 0;
globalProgress(); globalProgress();
opts.uploadStarted(index, file, files_count, xhr); opts.uploadStarted(index, file, files_count, xhr);
var afterComplete = function() { var afterComplete = function(result) {
filesDone++; filesDone++;
// Remove from processing queue // Remove from processing queue
...@@ -714,7 +720,7 @@ ...@@ -714,7 +720,7 @@
timeDiff = now - start_time, timeDiff = now - start_time,
result = opts.uploadFinished(index, file, serverResponse, timeDiff, xhr); result = opts.uploadFinished(index, file, serverResponse, timeDiff, xhr);
afterComplete(); afterComplete(result);
// Pass any errors to the error option // Pass any errors to the error option
if (xhr.status < 200 || xhr.status > 299) { if (xhr.status < 200 || xhr.status > 299) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment