$cordovaFile.writeFile 写入空白文件
$cordovaFile.writeFile writes blank file
我在 $cordovaFile 中使用 writeFile(path, file, data, replace) 方法写入新文件(pdf, jpg, text )。
作为数据,我从 restful 服务获得数据流..(它看起来像 %PDF-1.5↵%����↵1 0 obj↵..)
问题是我可以写一个文件,但它打开时是一个空白的 pdf,但文件大小是正确的。
对于数据字段,我使用了数据流本身,blob object(var blob = new Blob([data], { type: 'application/pdf' });) ,
这是我的代码
var path = cordova.file.externalRootDirectory;
$cordovaFile.writeFile(path, "myCreatedPdf.pdf", blob, true)
.then(function(success){
console.log("file");
$cordovaFileOpener2.open(
success.target.localURL,'application/pdf'
);
}, function (error) {
console.log("error");
});
请帮帮我……有什么想法吗……?
使用此方法可以正确写入文本文件。问题是 .pdf .png 文件写入。所以我用这个方法写文件。对我有用。
function saveFile(pdfBlob, fileName) {
var deferred = $q.defer();
var filePath = "";
try {
console.log('SaveFile: requestFileSystem');
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
} catch (e) {
console.error('SaveFile_Err: ' + e.message);
deferred.reject(e);
throw ({ code: -1401, message: 'unable to save report file' });
}
function gotFS(fileSystem) {
fileSystem.root.getDirectory("TokenReader", { create: true }, gotDir);
}
function gotDir(dirEntry) {
//console.error('SaveFile: gotFS --> getFile');
//dirEntry.getFile("rptSampleNew.pdf", {create: true, exclusive: false}, gotFileEntry, fail);
dirEntry.getFile(fileName, { create: true, exclusive: false }, gotFileEntry, fail);
}
function gotFileEntry(fileEntry) {
//console.error('SaveFile: gotFileEntry --> (filePath) --> createWriter');
filePath = fileEntry.toURL();
fileEntry.createWriter(gotFileWriter, fail);
}
function gotFileWriter(writer) {
//console.error('SaveFile: gotFileWriter --> write --> onWriteEnd(resolve)');
writer.onwriteend = function (evt) {
$timeout(function () {
deferred.resolve(filePath);
}, 100);
};
writer.onerror = function (e) {
console.log('writer error: ' + e.toString());
deferred.reject(e);
};
writer.write(pdfBlob);
}
function fail(error) {
console.log(error.code);
deferred.reject(error);
}
return deferred.promise;
}
我在 $cordovaFile 中使用 writeFile(path, file, data, replace) 方法写入新文件(pdf, jpg, text )。 作为数据,我从 restful 服务获得数据流..(它看起来像 %PDF-1.5↵%����↵1 0 obj↵..) 问题是我可以写一个文件,但它打开时是一个空白的 pdf,但文件大小是正确的。 对于数据字段,我使用了数据流本身,blob object(var blob = new Blob([data], { type: 'application/pdf' });) ,
这是我的代码
var path = cordova.file.externalRootDirectory;
$cordovaFile.writeFile(path, "myCreatedPdf.pdf", blob, true)
.then(function(success){
console.log("file");
$cordovaFileOpener2.open(
success.target.localURL,'application/pdf'
);
}, function (error) {
console.log("error");
});
请帮帮我……有什么想法吗……?
使用此方法可以正确写入文本文件。问题是 .pdf .png 文件写入。所以我用这个方法写文件。对我有用。
function saveFile(pdfBlob, fileName) {
var deferred = $q.defer();
var filePath = "";
try {
console.log('SaveFile: requestFileSystem');
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
} catch (e) {
console.error('SaveFile_Err: ' + e.message);
deferred.reject(e);
throw ({ code: -1401, message: 'unable to save report file' });
}
function gotFS(fileSystem) {
fileSystem.root.getDirectory("TokenReader", { create: true }, gotDir);
}
function gotDir(dirEntry) {
//console.error('SaveFile: gotFS --> getFile');
//dirEntry.getFile("rptSampleNew.pdf", {create: true, exclusive: false}, gotFileEntry, fail);
dirEntry.getFile(fileName, { create: true, exclusive: false }, gotFileEntry, fail);
}
function gotFileEntry(fileEntry) {
//console.error('SaveFile: gotFileEntry --> (filePath) --> createWriter');
filePath = fileEntry.toURL();
fileEntry.createWriter(gotFileWriter, fail);
}
function gotFileWriter(writer) {
//console.error('SaveFile: gotFileWriter --> write --> onWriteEnd(resolve)');
writer.onwriteend = function (evt) {
$timeout(function () {
deferred.resolve(filePath);
}, 100);
};
writer.onerror = function (e) {
console.log('writer error: ' + e.toString());
deferred.reject(e);
};
writer.write(pdfBlob);
}
function fail(error) {
console.log(error.code);
deferred.reject(error);
}
return deferred.promise;
}