MonacaでファイルAPI(ファイル操作プラグイン)を用いてファイルを移動させるコードを書いています。
こちらのサイトを参考に、フォルダAにある「abc.jpg」をフォルダBに移動させるコードを書きたいのですが、以下コードではエラーとなってしまい、ファイルの移動ができません。
問題点・改善点をご教授いただけますと幸いです。
よろしくお願いいたします。
JavaScript
1 2var fileName = 'abc.jpg'; 3var folderA = 'A'; 4var folderB = 'B'; 5 6window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onFileSystemFail); 7function onFileSystemSuccess(fileSystem) { 8 var directoryEntry = fileSystem.root; 9 //var directoryReader = directoryEntry.createReader(); 10 //directoryReader.readEntries(getFileName, fail); 11 12 //サブディレクトリのファイルを取得・移動 13 directoryEntry.getDirectory(folderA, { create: false }, function(subDirectoryEntry) { 14 subDirectoryEntry.move('/' + fileName, folderB + '/'); 15 }); 16 17} 18function onFileSystemFail(error) { 19 console.log("error: " + error.code); 20}
追記:
参照元サイトで「FileEntry」を使用していることから、もしかすると下記のようなコードが参考になるかも知れません。
JavaScript
1 var filename = 'abc.jpg'; 2 var folderurl = cordova.file.documentsDirectory + 'folderA' + '/'; 3 4 window.resolveLocalFileSystemURL( folderurl , 5 function getDirectoryEntry( directoryEntry ) { 6 directoryEntry.getFile( filename, null, 7 function readFile( fileEntry ) { 8 fileEntry.file( 9 function( file ) { 10 var reader = new FileReader(); 11 reader.onloadend = function() { 12 }; 13 reader.readAsText(file); 14 }, 15 function fail(e) { 16 // エラー処理 17 } 18 ); 19 }, 20 function fail(e) { 21 // エラー処理 22 } 23 ); 24 }, 25 function fail(e) { 26 // エラー処理 27 } 28 );
再追記:
エラーメッセージです。
Error in Success callbackId: File1535706521 : TypeError: directoryReader.move is not a function. (In 'directoryReader.move(fileName, '/' + folderB + '/')', 'directoryReader.move' is undefined)
TypeError: directoryReader.move is not a function. (In 'directoryReader.move(fileName, '/' + folderB + '/')', 'directoryReader.move' is undefined)
再追記(2017.10.21)
参考元のサイトのコードに即して書き直してみました。すると、
Error in Success callbackid:File870964021:
ReferenceError:Can't find variable:fs
とエラーになります。fsはおそらくFileSystemのことではないかと思うのですが、参考元サイトのコードそのままの部分なので、どのようにエラー対処していいものか見当が付きません。ちなみにfsをfileSystemに書き換えても同様のエラーになります。よろしくお願いいたします。
JavaScript
1window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) { 2 move('/' + folderA + '/' + 'abc.jpg', folderB + '/'); 3}, errorHandler); 4 5function move(src, dirName) { 6 fs.root.getFile(src, {}, function(fileEntry) { 7 8 fs.root.getDirectory(dirName, {}, function(dirEntry) { 9 fileEntry.moveTo(dirEntry); 10 }, errorHandler); 11 12 }, errorHandler); 13} 14 15 16function errorHandler(e) { 17 console.log('Error: ' + msg); 18}
回答2件
あなたの回答
tips
プレビュー