替代Flash的文件上传插件
由于Flash已被Chorme、FireFox、IE等各大主流浏览器彻底废止,所以必须寻找替代原有基于Flash的文件上传插件的方案。
利用熟悉的JQuery、HTML5 的 XMLHttpRequest,可以实现替代原有基于Flash的文件上传插件。
经过搜集整理、测试修改,得到了可用的插件文件,简单可用,以解燃眉之急。
运行效果如下:
插件文件如下:
引用代码示例:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>文件上传插件</title>
<link rel="stylesheet" type="text/css" href="sunnyFileUploader.css" />
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.sunnyFileUploader.js"></script>
<style type="text/css">
</style>
<script type="text/javascript">
$(function(){
$('#upload').html5uploader({
auto:true,
multi:true,
removeTimeout:9999999,
url:'upload.aspx',
});
</script>
</head>
<body>
<div id="upload"></div>
</body>
</html>
插件实现的关键代码:
var request = new XMLHttpRequest();
if (request.upload) {
// 上传中
request.upload.addEventListener("progress",
function(e) {
self.onProgress(file, e.loaded, e.total);
},
false);
// 文件上传是否成功
request.onreadystatechange = function(e) {
if (request.readyState == 4) {
if (request.status == 200) {
self.onUploadSuccess(file, request.responseText);
setTimeout(function() {
SUNNYFILE.onDelete(file.index);
},
option.removeTimeout);
self.onUploadComplete();
} else {
self.onUploadError(file, request.responseText);
}
}
};
option.onUploadStart();
//开始上传
request.open("POST", "服务端接收文件URL地址", true);
var formData = new FormData();
formData.append("Filedata", file);
//这里添加更多参数,例如上传路径等
request.send(formData);
祝你好运
以上