Я реализую аудиоплеер в html5, у которого есть опция перетаскивания для загрузки и воспроизведения mp3-файлов, но у меня проблема с файлом.Перетаскивание аудио-плеера HTML5
Когда файл удаляется по области, я могу видеть в свойствах консоли объекта, но нет информации об абсолютном пути из-за безопасности в веб-браузере.
Есть ли способ, как играть в mp3 таким образом?
index.html и тело содержание:
<div style="border: 1px solid black; width: 200px; height: 50px; padding: 10px;"" id="cudl">add file here</div>
<div id="play" style="border: 1px solid black; width: 200px; height: 50px; padding: 10px;">PLAY</div>
<div id="pause" style="border: 1px solid black; width: 200px; height: 50px; padding: 10px;">PAUSE</div>
<div id="progress" style="width: 1000px; height: 50px; background: black; "><div id="time" style="width: 0%; height: 50px; background: green;"></div></div>
JavaScript:
window.onload = function() {
var cudl = document.getElementById("cudl");
cudl.addEventListener("dragover", function (ev) {
ev.preventDefault();
}, false);
cudl.addEventListener("drop", function (ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("audio/mpeg");
var allAudio = document.getElementsByTagName("audio");
if (allAudio.length > 0) {
for (var i = 0; i < allAudio.length; i++) document.body.removeChild(allAudio[i]);
}
var audio = document.createElement("audio");
audio.setAttribute("src", ev.dataTransfer.files[0].name);
document.body.appendChild(audio);
console.log("append file");
console.log(ev.dataTransfer.files[0]);
audio.addEventListener("durationchange", function() {
console.log("dc " + this.duration);
});
audio.addEventListener("timeupdate", function() {
//console.log("ct " + this.currentTime);
var prog = document.getElementById("time");
prog.style.width = Math.floor(this.currentTime/this.duration * 100) + "%";
});
var play = document.getElementById("play");
play.addEventListener("click", function() {
document.getElementsByTagName("audio")[0].play();
});
var pause = document.getElementById("pause");
pause.addEventListener("click", function() {
document.getElementsByTagName("audio")[0].pause();
});
}, false);
};
Может быть, вы можете принять использование [HTML5 Blob/API File] (https://developer.mozilla.org/en-US/docs/Web/API/window.URL). – Passerby