ID3 - base64 无法设置为 img 的 src
ID3 - base64 cannot set as src for img
我刚刚通过 ID3 API 获取音频文件的封面。
由 API 创建的 base64 非常好,不能在 img
标签的 src
中声明。该脚本甚至不尝试为 img
标记设置新的 src
。
https://github.com/aadsm/JavaScript-ID3-Reader
这是我的尝试:
<a class="uploaded_file"><img src="/symbol/audio.png"></a>
function getAudioCover(url) {
var tags = ID3.getAllTags(url);
var image = tags.picture;
if (image) {
var base64String = "";
for (var i = 0; i < image.data.length; i++) {
base64String += String.fromCharCode(image.data[i]);
}
var base64 = "data:" + image.format + ";base64," +
window.btoa(base64String);
return base64;
}
else {
return "/symbol/audio.png";
}
}
var uploadedFiles = 0;
var file_cover;
ID3.loadTags("audio.mp3", function() {
file_cover = getAudioCover("audio.mp3");
console.log(file_cover);
}, {
tags: ["picture"]
});
$('.uploaded_file:eq(' + uploadedFiles + ')').find('img').attr("src", file_cover);
控制台给出了这个:https://jsfiddle.net/f1wzbtyh/
我如何让它工作?
jquery 或 src 属性是否存在字符串长度溢出?
在回调函数中调用 .attr()
。 file_cover
在 .loadTags
调用之外引用时可能未定义。
ID3.loadTags("audio.mp3", function() {
file_cover = getAudioCover("audio.mp3");
console.log(file_cover);
$('.uploaded_file:eq(' + uploadedFiles + ')')
.find('img').attr("src", file_cover);
}, {
tags: ["picture"]
});
我刚刚通过 ID3 API 获取音频文件的封面。
由 API 创建的 base64 非常好,不能在 img
标签的 src
中声明。该脚本甚至不尝试为 img
标记设置新的 src
。
https://github.com/aadsm/JavaScript-ID3-Reader
这是我的尝试:
<a class="uploaded_file"><img src="/symbol/audio.png"></a>
function getAudioCover(url) {
var tags = ID3.getAllTags(url);
var image = tags.picture;
if (image) {
var base64String = "";
for (var i = 0; i < image.data.length; i++) {
base64String += String.fromCharCode(image.data[i]);
}
var base64 = "data:" + image.format + ";base64," +
window.btoa(base64String);
return base64;
}
else {
return "/symbol/audio.png";
}
}
var uploadedFiles = 0;
var file_cover;
ID3.loadTags("audio.mp3", function() {
file_cover = getAudioCover("audio.mp3");
console.log(file_cover);
}, {
tags: ["picture"]
});
$('.uploaded_file:eq(' + uploadedFiles + ')').find('img').attr("src", file_cover);
控制台给出了这个:https://jsfiddle.net/f1wzbtyh/
我如何让它工作?
jquery 或 src 属性是否存在字符串长度溢出?
在回调函数中调用 .attr()
。 file_cover
在 .loadTags
调用之外引用时可能未定义。
ID3.loadTags("audio.mp3", function() {
file_cover = getAudioCover("audio.mp3");
console.log(file_cover);
$('.uploaded_file:eq(' + uploadedFiles + ')')
.find('img').attr("src", file_cover);
}, {
tags: ["picture"]
});