私はたくさんの投稿を読みましたが、最終的な答えは得られませんでした。この link のコードから始めて、ファイルをアプリにダウンロードしました。とにかく、それを「ダウンロード」フォルダに入れたいです。私はAndroidを使用していますが、iOSにも有効なソリューションが欲しいのは明らかです。
[〜#〜]編集[〜#〜]
ファイルのパスがわかっている場合は、移動するだけです。
var storageLocation = "";
console.log(device.platform);
switch (device.platform) {
case "Android":
storageLocation = 'file:///storage/emulated/0/';
break;
case "iOS":
storageLocation = cordova.file.documentsDirectory;
break;
}
var fileUri = "file:///data/user/0/com.arsdigitalia.myapp/files/files/MyApp/test.pdf"
function moveFile(fileUri) {
window.resolveLocalFileSystemURL(
fileUri,
function(fileEntry){
var parentEntry = storageLocation + "Download";
// move the file to a new directory and rename it
fileEntry.moveTo(parentEntry, "newFile.pdf", success, fail);
},
errorCallback);
}
オリジナル
これを実現するために使用するコードのサンプルを以下に示します。これはAndroidで最適に機能します。iOSはアプリのサンドボックス化により少し異なるため、ファイルの取得は自分で処理する必要があります。また、Cordovaデバイスプラグインを使用して、アプリが実行されているデバイスを特定します。次に、それに合わせてストレージパスを変更できます。
var storageLocation = "";
console.log(device.platform);
switch (device.platform) {
case "Android":
storageLocation = 'file:///storage/emulated/0/';
break;
case "iOS":
storageLocation = cordova.file.documentsDirectory;
break;
}
window.resolveLocalFileSystemURL(storageLocation,
function (fileSystem) {
fileSystem.getDirectory('Download', {
create: true,
exclusive: false
},
function (directory) {
//You need to put the name you would like to use for the file here.
directory.getFile("YOUR_FILE_NAME", {
create: true,
exclusive: false
},
function (fileEntry) {
fileEntry.createWriter(function (writer) {
writer.onwriteend = function () {
console.log("File written to downloads")
};
writer.seek(0);
writer.write(YOUR_FILE_HERE); //You need to put the file, blob or base64 representation here.
}, errorCallback);
}, errorCallback);
}, errorCallback);
}, errorCallback);
var errorCallback = function(e) {
console.log("Error: " + e)
}
次に、使用できるディレクトリからファイルリストを取得します。
window.resolveLocalFileSystemURL(storageLocation,
function (fileSystem) {
fileSystem.getDirectory('Download', {
create: true,
exclusive: false
},
function (directory) {
var reader = directory.createReader();
reader.readEntries(function (files) {
if (files.length == 0) {
console.log("No files found in downloads folder.")
} else {
$.each(files, function (i, v) {
console.log("File Name: " + files[i].name;)
});
}
}, getFilesFail);
}, getFilesFail);
}, getFilesFail);
var getFilesFail = function(e) {
console.log("Error: " + e);
}
デバイスプラグインをインストールするには、次のコマンドを使用します。
cordova plugin add cordova-plugin-device
ここにドキュメント:
https://cordova.Apache.org/docs/en/latest/reference/cordova-plugin-device/