We've successfully created an offline application using HTML5. What it does is store data in indexedDB or in localStorage, when online, the local storage and online database will be synchronized. Everything's fine until we decided to add functionality to upload images.
1) Since the app works offline, we cannot upload images in the server, where are we going to put them?
Possible Solutions:
2) If we successfully save the image in indexedDB or localStorage, how are we going to upload it once the user gets online?
Possible Solutions:
3) If we successfully saved the image in indexedDB or localStorage, how are we going to display it on the page? Image elements use src attribute to determine which image to display, is there any other methods like using image binary?
If you have faced the same situation before, what workaround did you do to achieve your goal?
Offline web applications are available through the new HTML Offline Web Application API, also known as HTML Application Cache. Beyond simply serving pages to the user when an Internet connection is unavailable, often an offline application requires storage of user's information.
Of course, you can't. But you can download when you're online. And that's how HTML5 offline applications work. At its simplest, an offline web application is a list of URL s — HTML , CSS , JavaScript, images, or any other kind of resource.
Offline Application Caching APIs The mechanism for ensuring Web applications are available even when the user is not connected to their network is the manifest attribute on the html element. This file specifies several files to cache, and then specifies that server.
Use FileAPI available in HTML5. You can "upload" your images there, and then, when the server is back online, you can transfer them, even using traditional XHR.
FileAPI is safe to use as most of the major browsers support it: http://caniuse.com/#feat=fileapi
Detailed:
1) Write the file to permament
or temporary
storage (as defined by our application). Note that temporary
storage is cleared when the session exits (at the browsers discretion).
See here for tutorial: http://www.html5rocks.com/en/tutorials/file/filesystem/?ModPagespeed=noscript
2) I would use traditional XHRequests to transmit them. It's easier and well-tested (you don't have to design a new protocol from scratch).
3) That's the best thing :) You can get correct URLs right from the File API, so the images are displayed from your cache. See here: http://www.html5rocks.com/en/tutorials/file/filesystem/?ModPagespeed=noscript#toc-filesystemurls
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With