使用HTML5的新特性异步上传图像文件

利用HTML5的新特性实现文件异步上传,非常简单方便。首先,我们使用CSS z-index属性输入=文件标签隐藏ID = btnselect元下。在触发标记的点击后,弹出文件选择框。




利用HTML5的新特性对文件进行异步上传非常简单和方便。本文主要介绍JS的部分和HTML结构。下面的代码没有使用第三图书馆,如果有一个参考,请注意一些未被显示的代码片段。我身边效果预览:

1。文件没有选择2。文件已被选中


HTML代码段:

思路:在下面的代码中,我使用了CSS z-index属性来隐藏输入=file标签的ID = btnselect元下。在触发一个标签的点击,弹出文件选择框,下面的masklayer用于点击弹出层后确认按钮被点击,避免用户多次点击确认按钮。

复制代码代码如下所示:

单击以选择要上载的照片。

确认上传


图片上传…


js照片文件验证部分:

验证部分的大小,是否已选定的文件类型为三部分。第一CreateObject方法创建一个本地图像文件的预览路径,并验证它是否是空的,文件类型和文件大小。

假,在以上3个条件都满足了,图片预览是DOM中的生成,增加img元素,和预览路径是通过createobjecturl获得()方法。

代码uff1a

复制代码代码如下所示:
获取地址/ URL / URL数据。
功能createobjecturl(BLOB){
如果(窗口URL){
返回window.url.createobjecturl(BLOB);
如果(窗口。webkiturl){ }
返回window.webkiturl.createobjecturl(BLOB);
{ { { }
返回null;
}
}
文件检测
功能checkfile(){
获取文件
var文件= $(上传的文件)。文件{ 0 };
空文件判断
如果(文件无效文件| | = = = = = = undefined){
警报()请选择您要上载的文件!;
Suoyuan(btnselect ).innerHTML =点击选择要上传的照片;
返回false;
}
文件类型检测
如果(file.type.indexof(图像的)= 1){
警报()请选择图片文件!;
返回false;
}
计算文件大小
无功大小= math.floor(文件大小/ 1024);
如果(大小> 5000){
警报(上载文件不得超过500米)!;
返回false;
};
添加预览图片
Suoyuan(btnselect )= .innerHTML ;
};

请求部分:

描述:第一个侦听器文件选择更改事件,然后在满足验证条件之后执行预览。第二事件监听器是弹出窗口时,点击btnselect听反应。下一步是确定事件的上传按钮,监控并开始发送Ajax请求,createxhr()方法来创建XMLHttpRequest对象,而我还没有公布的代码,包括addEventListener()方法。这2个部分可以参考其他文章。

复制代码代码如下所示:
复制代码
监视器地址更改。
AddEventListener ($$(uploadFile), change (function) {
checkfile();
});
单击select按钮/监视器
addEventListener($(btnselect )、点击(功能){
POP /文件选择框
Suoyuan(上传的文件)(点击);
});
单击上载按钮以确认监视事件。
addEventListener($(btnconfirm ,单击)
如果(checkfile()){
{试
XHR =无功 / /执行上传操作(createxhr);
Suoyuan(masklayer )。style.display =块;
Xhr.open(后
Xhr.setRequestHeader(x-requested-with
xhr.onreadystatechange =函数(){
如果(xhr.readystate = = 4){
VaR xhr.responsetext旗=;
如果(标志=成功){
警报()照片上传成功!;
{人}
警报()照片上传成功!;
};
Suoyuan(masklayer )。style.display =没有;
};
};
表单数据
VaR FD =新表单();
Fd.append(我的照片$(上传的文件)。文件{ 0 });
发送/执行
Xhr.send(FD);
} catch(e){
console.log(E);
}
}
});

以上是所有主要部分的代码,如果有什么问题可以联系我,欢迎交流。