所以我正在制作一个有超过50个SWF电影的小项目,我希望能够像普通人一样观看它们(播放,暂停,倒带和所有那些好东西)。
Anywho,我已经完成了所有这些...... 我唯一能做的就是改变嵌入式Flash播放器动态,即用户选择显示的.swf文件而不是硬编码的路径。
到目前为止,这是我的代码:
function changePlayerSrc()
{
var player = document.getElementById("flash_player_obj"); //selects the flash player object
var file = document.querySelector('input[type=file]').files[0]; //get the user's file
var reader = new FileReader();
reader.onloadend = function()
{
var clone = player.cloneNode(true); //cloned player
var res = reader.result; //user's file as blob
clone.childNodes[1].setAttribute('src', res); //change src
player.parentNode.replaceChild(clone, player);
}
reader.readAsDataURL(file);
}

<object id = "flash_player_obj">
<embed = "flash_player_embed"
name = "flash_player"
src = "H:\test.swf"
width = "100%"
height = "500"
play = "false"
loop = "false"
quality = "high"
scale = "showall"
/>
</object>
<input type="file" onchange="changePlayerSrc()" />
&#13;
上面的代码只给了我一个空白的Flash播放器,没有播放。
我也尝试过使用reader.readAsArrayBuffer(file);
var res = reader.result;
var blob = new Blob([res], {type: "application/x-shockwave-flash"});
var url = URL.createObjectURL(blob);
使用url作为嵌入的src,这只是出于某种原因打开了保存文件对话框。
另请注意,我没有使用任何服务器端代码,因为没有任何服务器可以使用。
此脚本仅在单个.html
文件上运行。