我正在尝试使用 PERMANENT STORAGE 在用户的本地文件系统中使用 HTML5 Filesystem API 编写 mp3。我有一个拖放区域,其中一个事件触发 dataTransfer.files。但是如何使用 SoundManager 2 加载文件以在浏览器中播放 mp3?
Soundmanager 需要一个路径作为 createSound 的参数:
url: [
{type:'audio/mp3',url:'/path/to/play.php?song=123'}
]
我使用 Filesystem API 成功读取的文件的路径是什么?
以下成功运行:
var files = evt.dataTransfer.files; // FileList object.
// files is a FileList of File objects. List some properties.
//var output = [];
for (var i = 0, f; f = files[i]; i++) {
audio.playlist.push(escape(f.name)); // saving filenames in array for playlist
writeFile(fs.root,files[i]);
}
for (var i = 0, f; f = files[i]; i++) {
fs.root.getFile(escape(files[i].name), {create: false}, function(fileEntry) {
alert('A file ' + fileEntry.name + ' was read successfully.');
}, errorHandler);
}
后来我打电话给 Soundmanager 2(它只在我将相对文件路径传递给它时才有效) -
audio.nowPlaying = soundManager.createSound({
id: 'aSound',
url: audio.playlist[playlistId],
autoLoad: true,
volume: 20,
// ...with a recursive callback when play completes
onfinish: function(){
playlistId ++;
playAudio(playlistId);
}
})