Merge pull request #20595 from nextcloud/fix/ie11-fallback-upload

Fix IE11 upload fallback methods
This commit is contained in:
John Molakvoæ 2020-04-22 22:06:56 +02:00 committed by GitHub
commit d0a57a33a9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 26 additions and 2 deletions

View File

@ -44,6 +44,28 @@ OC.FileUpload = function(uploader, data) {
OC.FileUpload.CONFLICT_MODE_DETECT = 0; OC.FileUpload.CONFLICT_MODE_DETECT = 0;
OC.FileUpload.CONFLICT_MODE_OVERWRITE = 1; OC.FileUpload.CONFLICT_MODE_OVERWRITE = 1;
OC.FileUpload.CONFLICT_MODE_AUTORENAME = 2; OC.FileUpload.CONFLICT_MODE_AUTORENAME = 2;
// IE11 polyfill
// TODO: nuke out of orbit as well as this legacy code
if (!FileReader.prototype.readAsBinaryString) {
FileReader.prototype.readAsBinaryString = function(fileData) {
var binary = ''
var pt = this
var reader = new FileReader()
reader.onload = function (e) {
var bytes = new Uint8Array(reader.result)
var length = bytes.byteLength
for (var i = 0; i < length; i++) {
binary += String.fromCharCode(bytes[i])
}
// pt.result - readonly so assign binary
pt.content = binary
$(pt).trigger('onload')
}
reader.readAsArrayBuffer(fileData)
}
}
OC.FileUpload.prototype = { OC.FileUpload.prototype = {
/** /**
@ -938,12 +960,13 @@ OC.Uploader.prototype = _.extend({
// in case folder drag and drop is not supported file will point to a directory // in case folder drag and drop is not supported file will point to a directory
// http://stackoverflow.com/a/20448357 // http://stackoverflow.com/a/20448357
if ( ! file.type && file.size % 4096 === 0 && file.size <= 102400) { if ( !file.type && file.size % 4096 === 0 && file.size <= 102400) {
var dirUploadFailure = false; var dirUploadFailure = false;
try { try {
var reader = new FileReader(); var reader = new FileReader();
reader.readAsBinaryString(file); reader.readAsBinaryString(file);
} catch (NS_ERROR_FILE_ACCESS_DENIED) { } catch (error) {
console.log(reader, error)
//file is a directory //file is a directory
dirUploadFailure = true; dirUploadFailure = true;
} }
@ -1059,6 +1082,7 @@ OC.Uploader.prototype = _.extend({
message = response.message; message = response.message;
} }
} }
console.error(e, data, response)
OC.Notification.show(message || data.errorThrown, {type: 'error'}); OC.Notification.show(message || data.errorThrown, {type: 'error'});
} }