Each new version of iOS seems to come with new bugs surrounding browser-based file uploads. Today, we detected a number of new and very serious upload-related issues in the iOS8 gold master build. For those of you unfamiliar with this term, “gold master” is generally the last build of an in-beta Apple product that will eventually become the officially released version.
We’ve compiled a list of the file-upload-related issues, by browser. The issues discussed here may appear in earlier iOS8 betas as well. These new issues, coupled with existing issues in iOS browsers, make uploading files via your iPhone or iPad nearly impossible at this point.
New to iOS8:
- All files are uploaded 0-sized.
- File content is not readable via FileReader.
- URL.createObjectURL(file) returns a URL that, when loaded, includes an empty payload.
Chrome & UIWebView
New to iOS8:
- Browser crashes after attempting to select a file if “multiple” attribute is not present on file input element. This occurs with any web page contained inside a UIWebView if the app that spawned the Web View was not compiled with the iOS8 SDK.
Safari, Chrome, and UIWebView
- Files take a noticeable amount of time to be “selected”.
- Videos are uploaded as 0-sized files if multiple attribute is present on file input element.
With these outstanding bugs, File API support and file uploads are now completely broken in Safari. In Chrome, video uploads are impossible, and image uploads only possible if the “multiple” attribute on the file input element is included. In any app run inside UIWebView, all file uploads are possible, but only if the multiple attribute if left off of the file input element.
We have filed bugs with Apple and Google, but we encourage you to file issues as well. It is critical that these issues are fixed before iOS8 releases to prevent a complete loss of browser-based file upload and file manipulation for mobile Apple device users. This is not just a Fine Uploader issue. Rather, it affects any browser-based applications that accept file uploads, manipulate, or read files client-side.
How We Are Dealing With This in Fine Uploader
Fine Uploader 5.0.5 includes a workaround for the browser-crash issue. A workaround for the 0-sized video uploads has been a part of Fine Uploader for quite a while already, but, keep in mind, the workaround for the browser crash issue negates the 0-size video upload workaround in Chrome and UIWebView.
The bug in iOS8 Safari that prevents any sort of file uploads or file reading cannot be worked around. Instead, we have added some code that identifies this browser and alerts users. The alert explains the issue a bit, and asks users to switch to Chrome until Apple addresses the bug in iOS8 Safari.
All workarounds are now attached to options, and can be disabled by setting the corresponding flag to false. See the new workaround option documentation for more details. It is unlikely that you will ever want to disable these workarounds (as we intend to revert these workarounds once the corresponding browser bugs are fixed), but, just in case, this is possible. Note that you can also customize the alert displayed to your users in iOS8 Safari by overriding the default text for the unsupportedBrowserIos8Safari message.
Update: September 18, 2014
The released version of iOS8 (8.0) contains all the bugs described above. Workarounds and detection methods are present in Fine Uploader 5.0.5.
Update: September 24, 2014
Apple released a hotfix update today: 8.0.1. This hotfix appeared to address the broken file input and File API in iOS8 Safari. It also seemed to fix the long-standing issue that resulted in upload of 0-sized videos when the file input element contains a multiple attribute. Sadly, 8.0.1 contained some other serious regressions that prevented some devices from obtaining cellular service. As a result, Apple aborted the 8.0.1 update shortly after its release. There is no known planned release date for 8.0.2, as Apple is unnecessarily secretive about dates (among other things). Given the serious quality issues with the last two iOS releases, it seems likely that Apple will take a bit more time before releasing 8.0.2. So, perhaps the release that addresses the issues described above could be weeks off, if not more.
Update: September 29, 2014
Apple released a hotfix update a couple days ago: 8.0.2. This hotfix appeared to address the broken file input and File API in iOS8 Safari. However, videos now cannot be uploaded successfully at all in Chrome. We are considering an 8.0.2-targeted hotfix release for Fine Uploader that disables the workaround targeted at Safari for iOS 8.0.2 and up. Unfortunately, iOS8 still has a number of serious bugs at this point. You might want to encourage any of your users tied to Apple devices to stick with iOS7, or, better yet, iOS6.