注意:此问题正在重新发布,因为无论出于何种原因,原始海报决定在提供并接受答案后将其删除。因此,我再次添加它以保存知识
原始问题:
我正在努力了解cordova appache的crud操作是如何工作的。 我在worklight中创建了一个删除函数,如下所示:
的index.html:
<a href="#" class="btn large" onclick="deleteAudio();">Delete the local MP3 file</a><br/>
main.js:
function deleteAudio() {
var entry= "file:///data/data/com.TestApp/files/4638.mp3";
function success(entry) {
alert("Removal succeeded");
}
function fail(error) {
alert('Error removing file: ' + error.code);
}
// remove the file
entry.remove(success, fail);
}
尝试删除时,不会删除代码。我收到了这个错误:
10-11 09:54:14.419: E/NONE(1821): Uncaught Exception: Uncaught TypeError: Object file:///data/data/com.TestApp/files/4638.mp3 has no method 'remove' at (compiled_code):68
我可以帮忙吗?谢谢。
答案 0 :(得分:5)
您不能简单地拥有一个包含文件路径的变量,并在其上使用.remove
方法。对于所有意图和目的,它只是一个变量,里面有一些字符串。这基本上就是错误所说的。它不知道.remove
是什么。
.remove
才可用
以下作品:
var entry= "file:///data/data/com.TestApp/files/4638.mp3";
window.resolveLocalFileSystemURL (entry,
function (fileEntry) {
fileEntry.remove(
function () {
alert('File is removed.');
},
function (error) {
alert('Unable to remove file.');
}
);
}
);
由于这继续the previously asked question,以下是完整的示例:
<强>的index.html 强>
<button id="downloadMP3">Download MP3 file</button><br/>
<button id="playMP3" disabled>Play MP3 file</button><br/>
<button id="stopMP3" disabled>Stop MP3 file</button><br/>
<button id="deleteMP3" disabled>Delete MP3 file</button>
<强> main.js 强>
var mediaFile;
var mediaPlayback;
function wlCommonInit(){
$("#downloadMP3").click(downloadMP3);
$("#playMP3").click(playMP3);
$("#stopMP3").click(stopMP3);
$("#deleteMP3").click(deleteMP3);
}
function downloadMP3() {
var fileTransfer = new FileTransfer();
var remoteFilePath = encodeURI("http://www.noiseaddicts.com/samples_1w72b820/4638.mp3");
var localDownloadPath = cordova.file.dataDirectory + '4638.mp3';
alert ("Downloading...");
fileTransfer.download(
remoteFilePath,
localDownloadPath,
function(successResponse) {
mediaFile = successResponse.toURL();
// Remove "file://" so file could be found and later played.
mediaFile = mediaFile.replace('file://','');
$('#playMP3').prop('disabled', false);
$('#stopMP3').prop('disabled', false);
$('#deleteMP3').prop('disabled', false);
},
function(errorResponse) {
alert (JSON.stringify(errorResponse));
}
);
}
function playMP3() {
mediaPlayback = new Media(
mediaFile,
function() {
alert("Finished playing audio file.");
},
function() {
alert("Failed playing audio file.");
}
);
mediaPlayback.play();
}
function stopMP3() {
mediaPlayback.stop();
}
function deleteMP3() {
// Put back "file://" since it is needed in order to be found.
mediaFile = "file://" + mediaFile;
window.resolveLocalFileSystemURL(mediaFile,
function (fileEntry) {
fileEntry.remove(
function () {
alert('File is removed.');
},
function (error) {
alert('Unable to remove file.');
});
}
);
}