$(document).ready(function(){
$("#UploadFile").click(function () {
//获取文件控件
var file1 = document.getElementById("Upload_File1");
//判断文件长度,从而确定是否有文件
if (file1.value.length <= 0) {
alert('请选择要上传的文件!');
return false;
}
//限制文件大小是B为单位 4*1024为4KB,再*1024 即4MB
if (file1.files[0].size > (4 * 1024 * 1024)) {
alert('文件超过4M!');
return false;
}
var formData = new FormData();
formData.append("file1", $("#Upload_File1")[0].files[0]);
formData.append("id", "100");
var xhr = new XMLHttpRequest();
xhr.open("post", "TeamResourcesManage.aspx", true);
xhr.onload = function () {
alert('上传完成');
}
//这里是添加一个进度监听,回调方法是第二个参数,会自动传递一个对象过来下面说明
xhr.upload.addEventListener("progress", progressFunction, false);
xhr.send(formData);
});
//evt是自动传递过来的参数
function progressFunction(evt) {
//一个<progressBar>标签
var progressBar = document.getElementById("progressBar");
//一个span用于显示百分比%
var percentageDiv = document.getElementById("percentage");
//是否在进行上传
if (evt.lengthComputable) {
//总数
progressBar.max = evt.total;
//当前进度
progressBar.value = evt.loaded;
percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
}
}
});
以上是JS部分,Upload_File1可以是input type="file" 或者是 asp:FileUpload,我用的是后者。
下面是后台的也给出来吧,前台就不需要了吧
protected void Page_Load(object sender, EventArgs e)
{
//注意:不要加if(!IsPostBack)判断!
//file1这个是上面设置FormData的参数名,必须一致!其中Request.Files[]是文件相关的在里面
//Request["id"]是普通类型参数在里面,例如:int string ...
HttpPostedFile file = HttpContext.Current.Request.Files["file1"];
int id = int.Parse(HttpContext.Current.Request["id"]);
if (file != null)
{
//上传文件流
Stream stream = file.InputStream;
int l = file.ContentLength;
byte[] fileByte = new byte[l];
stream.Read(fileByte, 0, l);
stream.Close();
//文件名
string filename = file.FileName;
//文件后缀.xxx
string suffix = filename.Substring(filename.LastIndexOf('.'));
}
}