cordova-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nikhilkh <...@git.apache.org>
Subject [GitHub] cordova-plugin-file-transfer pull request: adding sample section t...
Date Mon, 04 Apr 2016 19:55:45 GMT
Github user nikhilkh commented on a diff in the pull request:

    https://github.com/apache/cordova-plugin-file-transfer/pull/136#discussion_r58437220
  
    --- Diff: README.md ---
    @@ -315,3 +315,231 @@ If you are upgrading to a new (1.0.0 or newer) version of File,
and you have pre
         cdvfile://localhost/persistent/path/to/file
     
     which can be used in place of the absolute file path in both `download()` and `upload()`
methods.
    +
    +## Sample: Download and Upload Files
    +
    +Use the File-Transfer plugin to upload and download files. In these examples, we demonstrate
several tasks like:
    +
    +* Downloading a binary file to the application cache
    +* Uploading a file created in your application's root
    +* Downloading the uploaded file
    +
    +## Download a Binary File to the application cache
    +
    +Use the File plugin with the File-Transfer plugin to provide a target for the files that
you download (the target must be a FileEntry object). Before you download the file, create
a DirectoryEntry object by using `resolveLocalFileSystemURL` and calling `fs.root` in the
success callback. Use the `getFile` method of DirectoryEntry to create the target file.
    +
    +```
    +window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, function (fs) {
    +
    +    console.log('file system open: ' + fs.name);
    +
    +    // Make sure you add the domain name to the Content-Security-Policy <meta>
element.
    +    var url = 'http://cordova.apache.org/static/img/cordova_bot.png';
    +    fs.root.getFile('downloaded-image.png', { create: true, exclusive: false }, function
(fileEntry) {
    +        download(fileEntry, url, true);
    +
    +    }, onErrorCreateFile);
    +
    +}, onErrorLoadFs);
    +```
    +
    +>*Note* For persistent storage, pass LocalFileSystem.PERSISTENT to requestFileSystem.
    +
    +When you have the FileEntry object, download the file using the `download` method of
the FileTransfer object. The 3rd argument to the function is the success handler, which you
can use to call the app's `readBinaryFile` function. In this code example, the `entry` variable
is a new FileEntry object that receives the result of the download operation.
    +
    +```
    +function download(fileEntry, uri) {
    +
    +    var fileTransfer = new FileTransfer();
    +    var fileURL = fileEntry.toURL();
    +
    +    fileTransfer.download(
    +        uri,
    +        fileURL,
    +        function (entry) {
    +            console.log("download complete: " + entry.toURL());
    +            readBinaryFile(entry);
    +        },
    +        function (error) {
    +            console.log("download error source " + error.source);
    +            console.log("download error target " + error.target);
    +            console.log("upload error code" + error.code);
    +        },
    +        null, // or, pass false
    +        {
    +            //headers: {
    +            //    "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
    +            //}
    +        }
    +    );
    +}
    +```
    +
    +To support operations with binary files, FileReader supports two methods, `readAsBinaryString`
and `readAsArrayBuffer`. In this example, use `readAsArrayBuffer` and pass the FileEntry object
to the method. Once you read the file successfully, construct a Blob object using the result
of the read.
    +
    +```
    +function readBinaryFile(fileEntry) {
    +    fileEntry.file(function (file) {
    +        var reader = new FileReader();
    +
    +        reader.onloadend = function (e) {
    +
    +            console.log("Successful file read: " + this.result);
    +            displayFileData(fileEntry.fullPath + ": " + this.result);
    +
    +            var blob = new Blob([new Uint8Array(this.result)], { type: "image/png" });
    +            displayImageData(blob);
    +        };
    +
    +        reader.readAsArrayBuffer(file);
    +
    +    }, onErrorReadFile);
    +}
    +```
    +
    +Once you read the file successfully, create a DOM URL string using `createObjectURL`,
and then display the image.
    +
    +```
    +function displayImageData(blob) {
    +
    +    // Note: Use window.URL.revokeObjectURL when finished with image.
    +    var objURL = window.URL.createObjectURL(blob);
    +
    +    // Displays image if result is a valid DOM string for an image.
    +    var elem = document.getElementById('imageFile');
    +    elem.src = objURL;
    +}
    +```
    +
    +## Upload a File
    +
    +When you upload a File using the File-Transfer plugin, use the File plugin to provide
files for upload (again, they must be FileEntry objects). Before you can upload anything,
create a file for upload using the `getFile` method of DirectoryEntry. In this example, create
the file in the application's cache (fs.root). Then call the app's writeFile function so you
have some content to upload.
    +
    +```
    +function onUploadFile() {
    +    window.requestFileSystem(window.TEMPORARY, 5 * 1024 * 1024, function (fs) {
    +
    +        console.log('file system open: ' + fs.name);
    +        var fileName = "uploadSource.txt";
    +        var dirEntry = fs.root;
    +        dirEntry.getFile(fileName, { create: true, exclusive: false }, function (fileEntry)
{
    +
    +            // Write something to the file before uploading it.
    +            writeFile(fileEntry);
    +
    +        }, onErrorCreateFile);
    +
    +    }, onErrorLoadFs);
    +}
    +```
    +
    +In this example, create some simple content, and then call the app's upload function.
    +
    +```
    +function writeFile(fileEntry, dataObj) {
    +    // Create a FileWriter object for our FileEntry (log.txt).
    +    fileEntry.createWriter(function (fileWriter) {
    +
    +        fileWriter.onwriteend = function (e) {
    +            console.log("Successful file read...");
    +            upload(fileEntry);
    +        };
    +
    +        fileWriter.onerror = function (e) {
    +            console.log("Failed file read: " + e.toString());
    --- End diff --
    
    read => write?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@cordova.apache.org
For additional commands, e-mail: dev-help@cordova.apache.org


Mime
View raw message