Search code examples
uwpgifinkcanvasfilepicker

How to save and load InkCanvas gif file at fixed location without FilePicker


I want to save and load InkCanvas gif file without FilePicker.

I saw a sample using FilePicker, but I want to save the gif file automatically when I click the save button.

For example, when I save 1 InkCanvas gif file,

Then the gif file is saved at in a specific folder on my C: drive.

I also want the file name grow automatically, so that I can load specific InkCanvas file.

Is this possible?


Solution

  • UWP apps run in a sandbox, so that the user can know what the app is doing and which files on her hard drive it accesses.

    In case you want to save files to a location on the user's hard drive, you will have to be given access to this location first. There are several options how to achieve this:

    1. FileSavePicker - the option you have discovered, but it requires the user to select the destination file each time manually. If you want to access the selected file next time the app is opened, you can utilize FutureAccessList, where you can store the StorageFile under a key, which will allow you to retrieve it again next time.
    2. FolderPicker - let the user select the folder where the images should be stored using a dialog, and you will get read/write permission to this folder. You can then easily create new files there as you require. If you want to access this selected location next time the app is opened, you can utilize FutureAccessList, where you can store the StorageFolder under a key, which will allow you to retrieve it again next time.
    3. Pictures library - your app can declare the picturesLibrary capability in the package.appxmanifest file and then get access to the user's pictures library for writing like this: Windows.Storage.StorageLibrary.GetLibraryAsync(Windows.Storage.KnownLibraryId.Pictures);
    4. Broad file system access - this is the "ultimate" solution and requires your app to target the Spring Creators Update of Windows 10 (pending release in April 2018) or later. You must declare the broadFileSystemAccess capability in your app's manifest and then you can directly access any filesystem path the user has access to. The only problem with this is that you need to have a good reason to do this (like building a file explorer app, or similar), because this capability is checked during Microsoft Store Certification and it is possible that your app would get rejected if the presence of this capability would seem unnecessary for the type of application you are publishing.