Solved using cordova-plugin-file.
Replace:
const url = window.URL.createObjectURL(new Blob([response.data]))
const link = document.createElement('a')
link.href = url
link.setAttribute('download', fileName)
document.body.appendChild(link)
link.click()
with:
var blob = new Blob([response.data])
if (typeof cordova !== 'undefined') {
saveBlob2File(fileName, blob)
}
cordova file plugin code:
function saveBlob2File (fileName, blob) {
var folder = cordova.file.externalRootDirectory + 'Download'
window.resolveLocalFileSystemURL(folder, function (dirEntry) {
console.log('file system open: ' + dirEntry.name)
createFile(dirEntry, fileName, blob)
}, onErrorLoadFs)
}
function createFile (dirEntry, fileName, blob) {
// Creates a new file
dirEntry.getFile(fileName, { create: true, exclusive: false }, function (fileEntry) {
writeFile(fileEntry, blob)
}, onErrorCreateFile)
}
function writeFile (fileEntry, dataObj) {
// Create a FileWriter object for our FileEntry
fileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = function () {
console.log('Successful file write...')
}
fileWriter.onerror = function (error) {
console.log('Failed file write: ' + error)
}
fileWriter.write(dataObj)
})
}
function onErrorLoadFs (error) {
console.log(error)
}
function onErrorCreateFile (error) {
console.log(error)
}