Javascript 使用Iframe for IE通过进程栏上传文件
我编写了代码,使用Iframe上传IE文件。 上传完毕。但是我想要一个进程条,但我不知道该怎么办,请帮忙Javascript 使用Iframe for IE通过进程栏上传文件,javascript,html,ajax,iframe,file-upload,Javascript,Html,Ajax,Iframe,File Upload,我编写了代码,使用Iframe上传IE文件。 上传完毕。但是我想要一个进程条,但我不知道该怎么办,请帮忙 function fileUpload(form, action_url, div_id) { // Create the iframe... var iframe = document.createElement("iframe"); iframe.setAttribute("id", "upload_i
function fileUpload(form, action_url, div_id) {
// Create the iframe...
var iframe = document.createElement("iframe");
iframe.setAttribute("id", "upload_iframe");
iframe.setAttribute("name", "upload_iframe");
iframe.setAttribute("width", "0");
iframe.setAttribute("height", "0");
iframe.setAttribute("border", "0");
iframe.setAttribute("style", "width: 0; height: 0; border: none;");
//target = "#fileIframe"
// Add to document...
form.parentNode.appendChild(iframe);
window.frames['upload_iframe'].name = "upload_iframe";
iframeId = document.getElementById("upload_iframe");
// Add event...
var eventHandler = function () {
if (iframeId.detachEvent) {
iframeId.detachEvent("onload", eventHandler);
// $('#progressNumber').text("100%");
}
else iframeId.removeEventListener("load", eventHandler, false);
// if (iframeId.addEventListener) iframeId.removeEventListener("progress", uploadProgress1, false);
// Message from server...
if (iframeId.contentDocument) {
content = iframeId.contentDocument.body.innerHTML;
} else if (iframeId.contentWindow) {
content = iframeId.contentWindow.document.body.innerHTML;
} else if (iframeId.document) {
content = iframeId.document.body.innerHTML;
}
document.getElementById(div_id).innerHTML = content;
// Del the iframe...
setTimeout('iframeId.parentNode.removeChild(iframeId)', 250);
}
if (iframeId.addEventListener) {
iframeId.addEventListener("load", eventHandler, true);
// $('#progressNumber').text("Processing...");
}
if (iframeId.attachEvent) iframeId.attachEvent("onload", eventHandler);
// Set properties of form...
form.setAttribute("target", "upload_iframe");
form.setAttribute("action", action_url);
form.setAttribute("method", "post");
form.setAttribute("enctype", "multipart/form-data");
form.setAttribute("encoding", "multipart/form-data");
// Submit the form...
form.submit();
document.getElementById(div_id).innerHTML = "Uploading...";
}
function fileSelectedIE() {
var fullname = $('#fileToUpload').val().toString();
var IndexExt = fullname.lastIndexOf(".");
var ext = fullname.substr(IndexExt + 1).toString();
var IndexFileName = fullname.lastIndexOf("\\");
var FileName = fullname.substring(IndexFileName+1, IndexExt).toString();
document.getElementById('fileName').innerHTML = 'Name: ' + FileName;
document.getElementById('fileSize').innerHTML = 'Size: Not Support';
document.getElementById('fileType').innerHTML = 'Type: ' + ext;
}
<input type="file" name="fileToUpload[]" id="fileToUpload" onchange="fileSelectedIE()" /></br>
<input type="button" value="upload" onClick="fileUpload(this.form,'UploadHandler.ashx','upload'); return false;"/>
<div id="fileName">
</div>
<div id="fileSize">
</div>
<div id="fileType">
</div>
<div id="progressNumber">
</div>
函数文件上传(表单、操作url、分区id){
//创建iframe。。。
var iframe=document.createElement(“iframe”);
setAttribute(“id”,“upload_iframe”);
setAttribute(“名称”、“上传iframe”);
iframe.setAttribute(“宽度”、“0”);
iframe.setAttribute(“高度”、“0”);
iframe.setAttribute(“边框”、“0”);
setAttribute(“样式”,“宽度:0;高度:0;边框:无;”;
//target=“#fileIframe”
//添加到文档。。。
form.parentNode.appendChild(iframe);
window.frames['upload\u iframe'].name=“upload\u iframe”;
iframeId=document.getElementById(“上传iframe”);
//添加事件。。。
var eventHandler=函数(){
if(iframeId.detachEvent){
detachEvent(“onload”,eventHandler);
//$('#progressNumber')。文本(“100%”;
}
else iframeId.removeEventListener(“加载”,eventHandler,false);
//if(iframeId.addEventListener)iframeId.removeEventListener(“进度”,uploadProgress1,false);
//来自服务器的消息。。。
if(iframeId.contentDocument){
content=iframeId.contentDocument.body.innerHTML;
}else if(iframeId.contentWindow){
content=iframeId.contentWindow.document.body.innerHTML;
}else if(iframeId.document){
content=iframeId.document.body.innerHTML;
}
getElementById(div_id).innerHTML=content;
//删除iframe。。。
setTimeout('iframeId.parentNode.removeChild(iframeId)'250);
}
if(iframeId.addEventListener){
iframeId.addEventListener(“加载”,eventHandler,true);
//$('#progressNumber')。文本(“处理…”);
}
if(iframeId.attachEvent)iframeId.attachEvent(“onload”,eventHandler);
//设置窗体的属性。。。
form.setAttribute(“target”、“upload_iframe”);
form.setAttribute(“action”,action\u url);
form.setAttribute(“方法”、“帖子”);
setAttribute(“enctype”、“多部分/表单数据”);
setAttribute(“编码”、“多部分/表单数据”);
//提交表格。。。
表单提交();
document.getElementById(div_id).innerHTML=“上传…”;
}
函数fileSelectedIE(){
var fullname=$('#fileToUpload').val().toString();
var IndexExt=fullname.lastIndexOf(“.”);
var ext=fullname.substr(IndexExt+1.toString();
var IndexFileName=fullname.lastIndexOf(“\\”);
var FileName=fullname.substring(IndexFileName+1,IndexExt).toString();
document.getElementById('fileName')。innerHTML='Name:'+fileName;
document.getElementById('fileSize')。innerHTML='Size:不支持';
document.getElementById('fileType')。innerHTML='Type:'+ext;
}
上载文件时如何创建进程栏?在支持文件API的用户代理中跟踪文件上载进度非常容易。不幸的是,IE9和更早的版本没有。如果没有文件API支持,您将无法(轻松)跟踪文件上载进度。从理论上讲,可以通过nginx或apache的FileUpload模块实现。这在我维护的javascript上传程序中有更详细的介绍