Skip to content

Cordova plugin for opening the native Save dialog and storing a file in the user-selected location

License

Notifications You must be signed in to change notification settings

ct-lh/cordova-plugin-save-dialog

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cordova-plugin-save-dialog

This Cordova plugin displays the native Save dialog which allows users to store a file in the selected location.

In Android, the plugin utilizes the Storage Access Framework to save a file in a user-selected location as described in the Android developer guide.

In iOS, the UIDocumentPickerViewController’s method initForExportingURLs:asCopy: is used for opening a document picker that can export a file to the selected folder. Note that this method is only available in iOS 14.0+, so older iOS versions are not supported by the plugin.

Installation

cordova plugin add cordova-plugin-save-dialog --save

API

The plugin’s functionality is accessible through the object cordova.plugins.saveDialog.

saveFile

Call this method to open the Save dialog and store raw contents in a file. The method accepts two arguments:

  • file contents as a Blob instance,
  • optional file name to display on default (the user may change it manually though).

The method returns a promise whose fulfillment value is a URI of the saved file in the user-selected location.

To construct a Blob representation for a file contents, either use the Blob constructor directly:

let blob = new Blob(["file contents"], {type: "text/plain"});
let fileName = "my-file.txt";
cordova.plugins.saveDialog.saveFile(blob, fileName).then(uri => {
    console.info("The file has been successfully saved to", uri);
}).catch(reason => {
    console.warn(reason);
});

or apply other methods of blob generation (such as Response.blob() for a network-fetched content):

try {
    let response = await fetch(`https://avatars.dicebear.com/api/avataaars/${Math.random()}.svg`);
    let blob = await response.blob();
    let uri = await cordova.plugins.saveDialog.saveFile(blob, "random-avatar.svg");
    console.info("The file has been successfully saved to", uri);
} catch (e) {
    console.error(e);
}

Do not try to use the returned URI for getting file access. It is provided for information purposes only. The user stores a file outside the application sandbox, so access to the saved resource is to be considered restricted.

About

Cordova plugin for opening the native Save dialog and storing a file in the user-selected location

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 46.4%
  • Java 26.8%
  • Objective-C 26.8%