我如何将任何媒体文件(swfs / mp4 / mp3 / png /其他媒体嵌入文件)链接到我的对象嵌入源: 基本上我想要这个:
<input type="file"></input>
发送上传的文件(最好是swf) 数据和值来源:
<object type="application/x-shockwave-flash" data=""
style="width:640px;height:480px;margin:1px 350px;">
<param name="movie" value="" />
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="wmode" value="opaque" />
<param name="quality" value="high" />
<param name="menu" value="false" />
</object>
链接到当前的整个项目:
我仍然是代码新手,如果人们没有因为不立即了解我而判断我,我将不胜感激
答案 0 :(得分:1)
我建议在<embed>
上使用<object>
标签进行基本的Flash嵌入(较少的设置代码)。
要实现您的目标,您必须...
检查选定的文件类型(在下面的代码中请参阅: var type = file.type;
)。
为此文件创建适当的元素(标签)(代码中的参见: document.createElement("video");
)。
删除容器中任何已存在的元素... .removeChild(container.childNodes[0]
。
使用<div>
.appendChild(someNewElement);
)中
您可以尝试以下操作:
这里的<div>
保存在<a>
标记内,该标记本身就是您新创建的(或 dynamic )元素的容器。请注意,其ID为aTag
,因此通过var container = document.getElementById("aTag");
获取引用意味着以后我们可以使用aTag
container.appendChild(tmpElement);
内容。
<!DOCTYPE html>
<html>
<body>
<p> Choose a media file...</p>
<input type="file" id="fileChooser" accept="*/*"/>
<div>
<a id="aTag"> </a>
</div>
<script>
document.getElementById('fileChooser').addEventListener('change', onFileSelected, false);
function onFileSelected(evt)
{
var file = evt.target.files[0]; // FileList object
var type = file.type;
//alert("file TYPE is : " + type);
var fileURL = URL.createObjectURL(file);
var reader = new FileReader();
reader.readAsDataURL(file);
var tmpElement; //will hold image, video, Flash content....
var path; //will hold URL of file BLOB (not file path)....
reader.onloadend = function(evt)
{
if (evt.target.readyState == FileReader.DONE)
{
//# update file path...
path = (window.URL || window.webkitURL).createObjectURL(file);
//# remove any other existing media element...
var container = document.getElementById("aTag");
container.removeChild(container.childNodes[0]);
//# create HTML5 media element...
if ( type == "image/jpeg" || type == "image/png" || type == "image/gif")
{
tmpElement = document.createElement( "img");
tmpElement.setAttribute("width", "650");
}
if ( type == "video/mp4" )
{
tmpElement = document.createElement( "video");
tmpElement.setAttribute("controls", "true" );
tmpElement.setAttribute("width", "800");
}
//# create Flash plugin <embed> tag...
if ( type == "application/x-shockwave-flash" )
{
path = (window.URL || window.webkitURL).createObjectURL(file);
aTag.innerHTML = "<embed id='aFlash' src='" + path + "' width='800' height='600' type='application/x-shockwave-flash'>"
//# stop code here since we don't need these "appendChild" commands below
return 0; //exit the function
}
//# add newly created HTML5 element with file path
tmpElement.setAttribute("src", path);
container.appendChild(tmpElement);
}
};
}
</script>
</body>
</html>
PS:
Chrome浏览器不允许通过文件选择动态加载SWF。 <embed>
标签必须在页面加载时以http://
参数中的基于file://
或"src"
的url存在。这是一个安全问题。
在Firefox上测试了SWF加载,效果很好。
更新的代码仅在Chrome上经过测试,可以很好地加载Flash内容。