diff --git a/README.md b/README.md index 03faac6..f58c059 100644 --- a/README.md +++ b/README.md @@ -236,34 +236,52 @@ function onOnline() { When the online event fires in the preceding code, call the app's `tryToUploadFile` function. -If the FileTransfer object's upload function fails, call the app's `offlineWrite` function to save the current data somewhere. +If the upload fails, then call the app's `offlineWrite` function to save the current data somewhere. ->*Note* This example requires the FileTransfer plugin. +>*Note* For simplicity, file reading & writing was omitted. Refer to the [cordova-plugin-file](https://github.com/apache/cordova-plugin-file#cordova-plugin-file) documentation for more information on file handling. ```js function tryToUploadFile() { // !! Assumes variable fileURL contains a valid URL to a text file on the device, var fileURL = getDataFileEntry().toURL(); + + getFileBlobSomehow(fileURL, function(fileBlob) { + var success = function (r) { + console.log("Response = " + r.response); + display("Uploaded. Response: " + r.response); + }; - var success = function (r) { - console.log("Response = " + r.response); - display("Uploaded. Response: " + r.response); - } + var fail = function (error) { + console.log("An error has occurred: Code = " + error.code || error.status); + offlineWrite("Failed to upload: some offline data"); + } - var fail = function (error) { - console.log("An error has occurred: Code = " + error.code); - offlineWrite("Failed to upload: some offline data"); - } + var xhr = new XMLHttpRequest(); - var options = new FileUploadOptions(); - options.fileKey = "file"; - options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1); - options.mimeType = "text/plain"; + xhr.onerror = fail; + xhr.ontimeout = fail; + xhr.onload = function() { + // If the response code was successful... + if (xhr.status >= 200 && xhr.status < 400) { + success(xhr); + } + else { + fail(xhr) + } + } - var ft = new FileTransfer(); - // Make sure you add the domain of your server URL to the - // Content-Security-Policy element in index.html. - ft.upload(fileURL, encodeURI(SERVER), success, fail, options); + // Make sure you add the domain of your server URL to the + // Content-Security-Policy element in index.html. + xhr.open("POST", encodeURI(SERVER)); + + xhr.setRequestHeader("Content-Type", "text/plain"); + + // The server request handler could read this header to + // set the filename. + xhr.setRequestHeader("X-Filename", fileURL.substr(fileURL.lastIndexOf("/") + 1)); + + xhr.send(fileBlob); + }); }; ```