I described the issue here:
https://stackoverflow.com/q/51969064/1619070

When I try to write a file with a correct blob nothing happen, I can see the 
file created but is empty and no error or exception or success event is fired

these are the function I've used

```
class FileHelper {

    public file:File;

    constructor() {
        this.file = new File();
    }

    public save(filename:string, dir:string, data:any):Promise<any> {

        console.log("FileHelper.save filename", filename);
        console.log("FileHelper.save dir", dir);
        console.log("FileHelper.save data", data);

        return this.file
                   .resolveDirectoryUrl(this.file.cacheDirectory)
                   .then((dir:DirectoryEntry) => {
                       this.onResolveDirectoryUrlSuccess(dir, filename, data, 
this.fileWriter, {
                           create: true,
                           exclusive: false
                       })
                   })
                   .catch((error:any) => {
                       console.log("FileHelper.save error", dir, filename, 
error);
                   });
    }

    private onResolveDirectoryUrlSuccess(dir:DirectoryEntry,
                                         filename:string,
                                         data:LanguageDataResponseVO,
                                         file_action:(args:Array<any>) => void,
                                         flags:any):void {
        console.log("FileHelper.onResolveDirectoryUrlSuccess", dir, filename);
        this.gotFileSystem(dir, filename, file_action, flags, data);
    }

    private gotFileSystem(dir:DirectoryEntry,
                          filename:string,
                          action:Function,
                          flags:{ create:boolean, exclusive?:boolean },
                          json?:LanguageDataResponseVO):void {

        console.log('FileHelper.gotFileSystem - nome file: ' + filename);

        dir.getFile(filename, flags,
            (fileEntry) => {
                console.log("FileHelper.gotFileSystem getFile succes", dir, 
filename, fileEntry);
                action.call(this, [fileEntry, json]);
            },
            (error) => {
                console.log("FileHelper.gotFileSystem getFile error", dir, 
filename, error);
            }
        );
    }

    private fileWriter(args:Array<any>) {

        console.log('App.LanguageService.fileWriter');

        let fileEntry:FileEntry = args[0];
        let json:string = args[1];

        let blob = new Blob(["text to save"], {type: 'text/plain'});

        fileEntry.createWriter(
            (file:any) => {
                console.log('App.LanguageService.SUCCESS', blob);

                file.onwritestart = (event: ProgressEvent) => {
                    console.log('FileHelper.fileWriter onwritestart - success 
file_name', fileEntry.name, event);
                };
                /**
                 * Handler for progress events.
                 */
                file.onprogress = (event: ProgressEvent) => {
                    console.log('FileHelper.fileWriter onprogress - success 
file_name', fileEntry.name, event);
                };
                /**
                 * Handler for write events.
                 */
                file.onwrite = (event: ProgressEvent) => {
                    console.log('FileHelper.fileWriter onwrite - success 
file_name', fileEntry.name, event);
                };
                /**
                 * Handler for abort events.
                 */
                file.onabort = (event: ProgressEvent) => {
                    console.log('FileHelper.fileWriter onabort - success 
file_name', fileEntry.name, event);
                };
                /**
                 * Handler for error events.
                 */
                file.onerror = (event: ProgressEvent) => {
                    console.log('FileHelper.fileWriter onerror - success 
file_name', fileEntry.name, event);
                };
                /**
                 * Handler for write end events.
                 */
                file.onwriteend = (event: ProgressEvent) => {
                    console.log('FileHelper.fileWriter onwriteend - success 
file_name', fileEntry.name, event);
                };

                file.write(blob);
            },
            (error) => {
                console.log('App.LanguageService.FAIL', error);            }
        );
    }

}
```

This is android behaviour, under iOS everything works correctly

[ Full content available at: 
https://github.com/apache/cordova-plugin-file/issues/244 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to