admin管理员组文章数量:1417411
I am working on this app on the Chrome App Store. Evidently the File API changed, so I needed to implement FileReader to get the local URL of a file that is dropped onto the page.
function drop(evt) {
v = evt.target.id;
evt.stopPropagation();
evt.preventDefault();
var files = evt.dataTransfer.files; // FileList object.
var f = files[0];
var reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function(theFile) {
return function(e) {
document.getElementById(v).src = e.target.result;
};
})(f);
reader.readAsDataURL(f);
}
What I am trying to do is load the URL of a song that is dropped onto the page into an HTML5 Audio tag's src
attribute. I can't figure out what I am doing wrong with this drop function.
Does anybody have any ideas?
I am working on this app on the Chrome App Store. Evidently the File API changed, so I needed to implement FileReader to get the local URL of a file that is dropped onto the page.
function drop(evt) {
v = evt.target.id;
evt.stopPropagation();
evt.preventDefault();
var files = evt.dataTransfer.files; // FileList object.
var f = files[0];
var reader = new FileReader();
// Closure to capture the file information.
reader.onload = (function(theFile) {
return function(e) {
document.getElementById(v).src = e.target.result;
};
})(f);
reader.readAsDataURL(f);
}
What I am trying to do is load the URL of a song that is dropped onto the page into an HTML5 Audio tag's src
attribute. I can't figure out what I am doing wrong with this drop function.
Does anybody have any ideas?
Share Improve this question asked May 31, 2011 at 20:45 Isaac LewisIsaac Lewis 1,1992 gold badges15 silver badges27 bronze badges2 Answers
Reset to default 2The solution in the end was simple. You cannot test the File Reader API from a local file system. This creates an Security Error - caused by the empty file headers from the local file system. To fix it, simply test it on any web server.
Hmm, this looks right to me. What is the current behavior? You're attaching the drop event to the audio element itself? You can get rid of the closure, since you're only using the first file and not looping through the FileList
Here's a similar DnD file snippet (it uses images instead of an src): http://www.html5rocks./tutorials/file/dndfiles/#toc-selecting-files-dnd
As an alternative, you could use a blobURL:
window.URL = window.URL || window.webkitURL;
function drop(evt) {
...
var file = evt.dataTransfer.files[0];
...
audio.src = window.URL.createObjectURL(file);
audio.onload = function(e) {
window.URL.revokeObjectURL(this.arc); // clean up
};
}
本文标签: javascriptFileReader read as DataUrlStack Overflow
版权声明:本文标题:javascript - FileReader read as DataUrl - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745265067a2650549.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论