In Chrome Apps, che sto scaricando un contenuto blob da un server utilizzando JavaScript XHR (angolare $ HTTP GET in particolare, con il tipo di risposta 'blob')App Chrome: come salvare il contenuto blob in file System in background?
Come devo salvare questo file system dell'applicazione Chrome?
Attualmente utilizzando un involucro angolare su HTML5 file system API https://github.com/maciel310/angular-filesystem
non voglio mostrare all'utente un pop-up (quindi non posso usare chrome.fileSystem. chooseEntry
)
Il chrome.fileSystem.requestFileSystem
API è supportata solo dai Kiosk- solo app. Quindi sto usando l'API FileSystem HTML5 invece di Chrome.
Sto usando il seguente codice per rendere XHR per recuperare blob.
$http({
url: SERVER_URL+"/someVideo.mp4",
method: "GET",
responseType: "blob"
}).then(function(response) {
console.log(response);
fileSystem.writeBlob(response.name, response).then(function() {
console.log("file saved");
}, function(err) {
console.log(err);
});
}, function (response) {
});
Questo è il mio metodo WriteBLOB
writeBlob: function(fileName, blob, append) {
append = (typeof append == 'undefined' ? false : append);
var def = $q.defer();
fsDefer.promise.then(function(fs) {
fs.root.getFile(fileName, {create: true}, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
if(append) {
fileWriter.seek(fileWriter.length);
}
var truncated = false;
fileWriter.onwriteend = function(e) {
//truncate all data after current position
if (!truncated) {
truncated = true;
this.truncate(this.position);
return;
}
safeResolve(def, "");
};
fileWriter.onerror = function(e) {
safeReject(def, {text: 'Write failed', obj: e});
};
fileWriter.write(blob);
}, function(e) {
safeReject(def, {text: "Error creating file", obj: e});
});
}, function(e) {
safeReject(def, {text: "Error getting file", obj: e});
});
}, function(err) {
def.reject(err);
});
return def.promise;
},
Questo dimostra come SECURITY_ERR
It was determined that certain files are unsafe for access within a Web application, or that too many calls are being made on file resources.
Qual è la soluzione per questo?
Ho provato a utilizzare il flag --allow-file-access-from-files
durante l'avvio dell'app. Non aiuta
Quando dici che non vuoi mostrare un popup.html ti basta dire che non desidera un pop-up che si verifichi? Significa che è necessario che lo script venga eseguito dalla scheda visualizzata con un metodo click? – wuno
Voglio dire che il video deve essere salvato automaticamente in background. non dovrebbe richiedere all'utente dove salvare, cosa che accade con il metodo choosEntry –
hai accettato la risposta dall'altra domanda come risposta n? – wuno