You need to be logged in to post in the forums. If you do not have an account, please sign up first.
Browser JS • Changelogs • Opera Next • Dragonfly • Bugs • Crashes • FTP
My Website ▪ My Forums ▪ Opera Review ▪ My Fonts ▪ IrfanView • Search • Downloads
Opera 11.64 on Windows XP Home • AMD64 3500 1GB RAM specs
Rules of Conduct and Posting Rules • Please Don't Shout • Editing Posts • Opera Config Links
Right-click, Open with, and use Firefox or another browser to upload your files/folders. When you're done, close Firefox and continue using Opera.
You should have understood that already if you read at least one or two of the previous threads.
Skydrive say to use a supported browser, i.e. they cannot be bothered to test their site to work in Opera. No one from Opera has commented yet to my knowledge. No users came up with a work-around AFAIK.
This might be a bug in Opera — there is one that limits the maximum size of cookies — or it might be a problem with the site. If its the first, try the latest Opera Next build and see if it works with that. If not, you will have to wait.
If its the second, then contact the web site and ask them to fix it. If they don't fix it you will have to wait — either that, or spend your time digging into the site's code to see what the problem is.
Browser JS • Changelogs • Opera Next • Dragonfly • Bugs • Crashes • FTP
My Website ▪ My Forums ▪ Opera Review ▪ My Fonts ▪ IrfanView • Search • Downloads
Opera 11.64 on Windows XP Home • AMD64 3500 1GB RAM specs
Rules of Conduct and Posting Rules • Please Don't Shout • Editing Posts • Opera Config Links
Browser JS • Changelogs • Opera Next • Dragonfly • Bugs • Crashes • FTP
My Website ▪ My Forums ▪ Opera Review ▪ My Fonts ▪ IrfanView • Search • Downloads
Opera 11.64 on Windows XP Home • AMD64 3500 1GB RAM specs
Rules of Conduct and Posting Rules • Please Don't Shout • Editing Posts • Opera Config Links
Originally posted by Pesala:
Someone said that it works in Opera 11.60
It doesn't work in 11.60 either (just tested to make sure). User must have tried to upload a file small enough that doesn't trigger the bug.
Originally posted by Pesala:
Someone said that it works in Opera 11.60 — is this a regression, or has the site's code changed recently to bring out the bug in Opera?
It have never worked in any version of Opera since SkyDrive was born.
I cannot believe that it is not possible to fix the bug. It is just developers' reluctance to solve the problem.
For anyone interested in the specific cause.
As burnout426 said, " there's a bug with readAsArrayBuffer() ".
Despite that, Opera claims to support readAsArrayBuffer(), as the following code-
<html>
<script type="text/javascript">
var a = new FileReader;
if (a.readAsArrayBuffer){
alert("readAsArrayBuffer supported"); }
else { alert("readAsArrayBuffer UNSUPPORTED"); }
</script>
</html>
returns the following output when viewed under Opera 11.6x and Opera 12.00 (I don't mean the bug isn't present in Opera 11.50 or lower, but I tested on these two versions)
readAsArrayBuffer supported
In bucket4.js in Skydrive, some part of the code is as follows,
b.isFolder=function(f)
{var a=new FileReader;a.onload=function()
{if(!d)if(!a.result&&!b.extension)f(true);else f(false)};
a.onerror=function(){if(!d)f(true)};
try{if(a.readAsArrayBuffer)a.readAsArrayBuffer(e(0,Math.min(1,c.size)));
else a.readAsBinaryString(e(0,Math.min(1,c.size)))}catch(g){f(true)}}
What happens is that Opera runs the readAsArrayBuffer() method. But due to the bug present in Opera in ReadAsArrayBuffer support, it fails.
The catch function catches the error, setting f to true; which in-turn sets b.isfolder to true - causing the "Skydrive cannot upload folders" error. (since the value of f = value of b.isfolder ; first line of code in bucket4.js mentioned in this post.)
@Pesala,
Skydrive uploading works in Opera 11.01 and lower. This is because they do not support FileReader API; and use some older method - the one used by Internet Explorer 8 and 9.
For all those who were making plain guesses that it's Microsoft's fault at http://my.opera.com/community/forums/topic.dml?id=1243532 , now tell; Microsoft has larger record of it's websites CURRENTLY (forget about those 2005, 2004 MSN, Hotmail Controversies) not working in Opera due to it being Microsoft's fault OR Opera has a larger record of breaking CURRENT Microsoft websites due to unfixed Core bugs.
If you need any help from me with regards to Opera, please make a comment on any of my blog posts.
Support Opera wishes
Originally posted by solarlynx:
I cannot believe that it is not possible to fix the bug.
That's good because it is possible to fix and Opera has a handle on it now. We just have to wait till a fix gets released in builds. But, I understand people have been waiting for a half a year at least, so it's frustrating to have to wait any longer. But, sit tight.
Originally posted by burnout426:
We just have to wait till a fix gets released in builds.
Or somehow, set FileReader.readAsArrayBuffer = false
OK, while for Skydrive, setting a.readAsArrayBuffer to false would work. But don't know how to do it via UserJS.
If you need any help from me with regards to Opera, please make a comment on any of my blog posts.
Support Opera wishes
FileReader.prototype.readAsArrayBuffer = false;
might be enough.
or
FileReader.prototype.readAsArrayBuffer = undefined;
or whatever you want it to equal.
If I apply it as a UserJS file, when creating a new variable x = new FileReader under Dragonfly Console; readAsArrayBuffer is set to false.
However, variable a (the variable referenced to FileReader) still seems to be same.
When trying
a.readAsArrayBuffer = false;
Dragonfly's Console says:
a.readAsArrayBuffer = false;
Uncaught exception: ReferenceError: Security error: attempted to read protected variable
So I think variable a is protected; and due to this FileReader.prototype.readAsArrayBuffer = false; doesn't help ????
If you need any help from me with regards to Opera, please make a comment on any of my blog posts.
Support Opera wishes
17. May 2012, 12:08:49 (edited)
Originally posted by Swapnil99pro:
The first one doesn't work (didn't try the second one).
I tried both and that causes Opera to get the old file uploader, but that one doesn't work (upload transfer doesn't actually start).
I haven't really looked at the code or anything though. Maybe I should look at it first.
For those testing user js fixes, remember to turn on User JavaScript on HTTPS.
Originally posted by burnout426:
For those testing user js fixes, remember to turn on User JavaScript on HTTPS.
It's turned on. I do get the warning "Do you want to allow local JavaScript files to control secure pages?".
Originally posted by burnout426:
I tried both and that cause Opera to get the old file uploader, but that one doesn't work.
You mean FileReader.prototype.readAsArrayBuffer = false; (or = undefined;) gets you the old file uploader.
Don't know how.
According to the code, if ReadAsArrayBuffer is not true; readAsBinaryString() is to be executed.
Originally posted by Swapnil99pro:
b.isFolder=function(f)
{var a=new FileReader;a.onload=function()
{if(!d)if(!a.result&&!b.extension)f(true);else f(false)};
a.onerror=function(){if(!d)f(true)};
try{if(a.readAsArrayBuffer)a.readAsArrayBuffer(e(0,Math.min(1,c.size)));
else a.readAsBinaryString(e(0,Math.min(1,c.size)))}catch(g){f(true)}}
And, readAsBinaryString should be successful.
If you need any help from me with regards to Opera, please make a comment on any of my blog posts.
Support Opera wishes
Originally posted by burnout426:
I understand people have been waiting for a half a year at least, so it's frustrating to have to wait any longer.
I don't think its a problem to wait six months or whatever it takes to fix it — what is frustrating is that Opera did know about this, but instead of simply saying "Its a known bug and we're working on it" the thread got locked without any response to inform users about the issue. This is what causes the frustration.
I assumed that Opera did not know the cause or that it was not within their control because after a year of this issue being reported, no one had said anything.
@ Burnout, I wonder why you kept quiet for until now.
Were you not aware of the multiple threads on this issue?
Browser JS • Changelogs • Opera Next • Dragonfly • Bugs • Crashes • FTP
My Website ▪ My Forums ▪ Opera Review ▪ My Fonts ▪ IrfanView • Search • Downloads
Opera 11.64 on Windows XP Home • AMD64 3500 1GB RAM specs
Rules of Conduct and Posting Rules • Please Don't Shout • Editing Posts • Opera Config Links
Originally posted by Pesala:
@ Burnout, I wonder why you kept quiet for until now. Were you not aware of the multiple threads on this issue?
Correct. Only noticed that there was a problem at all recently because of <http://my.opera.com/sitepatching/blog/show.dml/48164862#comment89416632>. (Also, I don't log into my hotmail account except for testing. And, for a no-hassle experience, usually only log into it, google.com (including youtube.com), yahoo.com, facebook.com and twitter.com in Firefox. Don't use Opera on any of those sites anymore.)
Originally posted by Swapnil99pro:
You mean FileReader.prototype.readAsArrayBuffer = false; (or = undefined;) gets you the old file uploader.Don't know how.
Actually, that may have been when I was just using FileReader = undefined + some other things. Basically just confirms your findings here. I'll have to wait till I have more time to actually look at the source.
Originally posted by Pesala:
I assumed that Opera did not know the cause or that it was not within their control because after a year of this issue being reported, no one had said anything.
They did not know the exact cause. See http://my.opera.com/sitepatching/blog/show.dml/48164862#comment89417772
If you need any help from me with regards to Opera, please make a comment on any of my blog posts.
Support Opera wishes
18. May 2012, 07:21:09 (edited)
Load <https://secure.wlxrs.com/vXBwNycYh8AAOoeaBYY1Eg/Bucket4.js> in a new tab and then view source of that page.
Select the source in the source tab, copy it, paste it into <http://jsbeautifier.org/>, beautify it, select it, copy and paste it back into the source tab (overwriting the current selection).
Change the b.isFolder part to:
b.isFolder = function (f) {
var a = new FileReader;
a.onload = function () {
alert('onload');
if (!d) if (!a.result && !b.extension) f(true);
else f(false)
};
a.onerror = function () {
alert('error');
if (!d) f(true)
};
try {
//if (a.readAsArrayBuffer) a.readAsArrayBuffer(e(0, Math.min(1, c.size)));
//else a.readAsBinaryString(e(0, Math.min(1, c.size)))
a.readAsBinaryString(c);
//a.readAsBinaryString(e(0, Math.min(1, c.size)));
//a.readAsText(c, "utf-8");
//a.readAsText(e(0, Math.min(1, c.size)));
} catch (g) {
f(true)
}
};
and click "Apply Changes".
Then, select the skydrive page and goto "Menu -> page -> developer tools -> reaload from cache".
Then, try the upload.
Now, what I'm seeing is that a.readAsBinaryString(e(0, Math.min(1, c.size))) still fires a.onerror. This kind of makes me believe that the e() function isn't returning the sliced file blob correctly for Opera.
Now, if I just try to use the blob directly with a.readAsBinaryString() (like above), I don't get an error and it'll get past "waiting" and will actually show "uploading". But, it'll stay at 0%. Same type of result for a.readAsText() (testing with a text file).
So, I'm guessing there are more issues than just Opera's a.readAsArrayBuffer() being broken. I have no clue what though. I could be wrong though. We'll have to wait for the fix to see if everything just works fine. Maybe the fix for readAsArrayBuffer() fixes some subtle things in reading in general.
18. May 2012, 07:37:48 (edited)
ArrayBuffer = undefined; FileReader = undefined; Blob = undefined; FileList = undefined; File = undefined;
and the upload works for me.
I tested the user js in a global user js folder. But, I also instead tested it with just a live.com (not skydrive.live.com, but that might work too) site preference.
You are excellent. Thanks for your time. I hope CORE-46374 is fixed soon; or atleast, for the time being, Opera should set it's readAsArrayBuffer support to false (which would also fix Skydrive - causing it to then run readAsBinaryString() )
If you need any help from me with regards to Opera, please make a comment on any of my blog posts.
Support Opera wishes
"Have you tried optimizing the Opera browser (clearing cache and cookies) or resetting it? Please try doing it then try uploading files afterwards. If the issue still persists, then the problem is with the browser. Contact their support fo assistance."
I've done clearing cache and cookies through 'Settings'->'Delete Private Data...'. No avail.
If you need any help from me with regards to Opera, please make a comment on any of my blog posts.
Support Opera wishes
For Opera 11.6x users, there is a patch in the latest BrowserJS file (May 22). The patch works and you can upload files like you would in another browser. (Tested by me on many files; the largest file being 17 MB uploaded fine with Opera). The issue is fixed for Opera 11.6x users. Please ensure that http://www.opera.com/docs/browserjs/ shows:
Current browser.js status: enabled.
Target version and time stamp of the active browser.js file is Opera Desktop 11.62 core 2.10.229, May 22, 2012. Active patches: 200 .
(this is what is displays for me in Opera 11.64).
If not, you could wait till Opera checks for updates to browser.js automatically or update manually.
For Opera 12 users, they want to fix the problem properly by fixing bugs in Opera causing this problem and as a result have not included the Skydrive patch in the Opera 12 BrowserJS file.
If you need any help from me with regards to Opera, please make a comment on any of my blog posts.
Support Opera wishes
I tried to upload a PDF file of 6.5 MB = and after some 15-20% progress, an error was returned from Skydrive-
Please enter a name that doesn't include any special characters, or begin or end with a "."
The same happened with all other files, even the smaller ones like 700 KB; except for some really small 3 or 4 KB images that uploaded fine.
The code triggering that error is inside bucket1.js, the exact line of code being-
else if(a.startsWith(".")||!g.extension&&a.endsWith("."))b=c("CantStartOrEndWithDotError");
Seems to be an Opera bug.
If you need any help from me with regards to Opera, please make a comment on any of my blog posts.
Support Opera wishes
Originally posted by Swapnil99pro:
so no User JS or any settings changed.
Do you have any extensions that inject User JS? That'll trigger that error too.
Edit: I was able to trigger that error once without any User JS, but most of the time, the upload is working fine more me.
No it doesn't
There's a way politer way to say that you believe I'm mistaken or that it's not working the same way for you than it is for me.
Originally posted by burnout426:
Do you have any extensions that inject User JS?
Nope, no extensions, no UserJS, the first thing I did after a clean-install (un-installed previous build > "Delete my Opera user data" checked in Uninstaller > Installed this build) of the build was to test Skydrive.
Yours is a clean-install or update from previous build?
Originally posted by burnout426:
There's a way politer way to say that you believe I'm mistaken or that it's not working the same way for you than it is for me.
Sorry for that.
If you need any help from me with regards to Opera, please make a comment on any of my blog posts.
Support Opera wishes
29. May 2012, 04:48:04 (edited)
Originally posted by Swapnil99pro:
Yours is a clean-install or update from previous build?
Fresh standalone installation where I was able to trigger the problem by setting a global user JS folder. I also tested with a dirty installation where I got that error until I unset a global User JS folder (that how I found out how to trigger it in the fresh profile). But, maybe it's something else that triggers it. At any rate, it's indeed not 100% working yet. Devs have been informed.
Opera 12 build 1441 has this fixed.
If you need any help from me with regards to Opera, please make a comment on any of my blog posts.
Support Opera wishes