0

    asp.net文件上传带进度条实现案例(多种风格)

    2023.05.21 | admin | 212次围观

    asp.net文件上传进度条实现案例(多种风格)

    更新时间:2022年05月06日 15:10:22 投稿:lijiao

    这篇文章主要讲解了asp.net文件上传带进度条实现案例,有不同风格的进度条,一定有一款最适合你html上传ui带有进度条,感兴趣的小伙伴们可以参考一下

    先饱饱眼福:

    在之前的文章中也有类似带进度条文件传送的案例html上传ui带有进度条,大家可以翻阅之前的文章对知识点进行扩充。

    部分代码:

    <%@ Page Language="C#" %> 
    <%@ Register Assembly="MattBerseth.WebControls.AJAX" Namespace="MattBerseth.WebControls.AJAX.Progress" TagPrefix="mb" %> 
     
     
     
     
     
     Untitled Page 
      
      
      
      
     
     
     

    文件上传

    upload.aspx:

    //限制大小 1M 
     protected void Page_Load2(object sender, EventArgs e) 
     { 
     if (this.IsPostBack) 
     { 
     UploadInfo uploadInfo = this.Session["UploadInfo"] as UploadInfo; 
     if (uploadInfo == null) 
     { 
     // 让父页面知道无法处理上传 
     const string js = "window.parent.onComplete('error', '无法上传文件。请刷新页面,然后再试一次);"; 
     ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true); 
     } 
     else 
     { 
     // 让服务端知道我们还没有准备好.. 
     uploadInfo.IsReady = false; 
     
     // 上传验证 
     if (this.fileUpload.PostedFile != null && this.fileUpload.PostedFile.ContentLength > 0 
     
     && this.fileUpload.PostedFile.ContentLength < 1048576)// 限制1M 
     { 
     // 设置路径 
     string path = this.Server.MapPath(@"Uploads"); 
     string fileName = Path.GetFileName(this.fileUpload.PostedFile.FileName); 
     
     // 上传信息 
     uploadInfo.ContentLength = this.fileUpload.PostedFile.ContentLength; 
     uploadInfo.FileName = fileName; 
     uploadInfo.UploadedLength = 0; 
     
     //文件存在 初始化... 
     uploadInfo.IsReady = true; 
     
     //缓存 
     int bufferSize = 1; 
     byte[] buffer = new byte[bufferSize]; 
     
     // 保存字节 
     using (FileStream fs = new FileStream(Path.Combine(path, fileName), FileMode.Create)) 
     { 
     while (uploadInfo.UploadedLength < uploadInfo.ContentLength) 
     { 
     //从输入流放进缓冲区 
     int bytes = this.fileUpload.PostedFile.InputStream.Read(buffer, 0, bufferSize); 
     // 字节写入文件流 
     fs.Write(buffer, 0, bytes); 
     // 更新大小 
     uploadInfo.UploadedLength += bytes; 
     
     // 线程睡眠 上传就更慢 这样就可以看到进度条了 
     System.Threading.Thread.Sleep(100); 
     } 
     } 
     
     // 删除. 
     File.Delete(Path.Combine(path, fileName)); 
     
     // 让父页面知道已经处理上传完毕 
     const string js = "window.parent.onComplete('success', '{0} 已成功上传');"; 
     ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", string.Format(js, fileName), true); 
     } 
     else 
     { 
     if (this.fileUpload.PostedFile.ContentLength >= 1048576)//1M 
     { 
     const string js = "window.parent.onComplete('error', '超出上传文件限制大小,请重新选择');"; 
     ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true); 
     } 
     else 
     { 
     const string js = "window.parent.onComplete('error', '上传文件出错');"; 
     ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true); 
     } 
     } 
     uploadInfo.IsReady = false; 
     } 
     } 
     } 
     
     // 不限制大小 
     protected void Page_Load(object sender, EventArgs e) 
     { 
     if (this.IsPostBack) 
     { 
     UploadInfo uploadInfo = this.Session["UploadInfo"] as UploadInfo; 
     uploadInfo.IsReady = false; 
     if (this.fileUpload.PostedFile != null && this.fileUpload.PostedFile.ContentLength > 0) 
     { 
     string path = this.Server.MapPath(@"Uploads"); 
     string fileName = Path.GetFileName(this.fileUpload.PostedFile.FileName); 
     
     uploadInfo.ContentLength = this.fileUpload.PostedFile.ContentLength; 
     uploadInfo.FileName = fileName; 
     uploadInfo.UploadedLength = 0; 
     
     uploadInfo.IsReady = true; 
     
     int bufferSize = 1; 
     byte[] buffer = new byte[bufferSize]; 
     
     using (FileStream fs = new FileStream(Path.Combine(path, fileName), FileMode.Create)) 
     { 
     while (uploadInfo.UploadedLength < uploadInfo.ContentLength) 
     { 
     int bytes = this.fileUpload.PostedFile.InputStream.Read(buffer, 0, bufferSize); 
     fs.Write(buffer, 0, bytes); 
     uploadInfo.UploadedLength += bytes; 
     } 
     } 
     const string js = "window.parent.onComplete('success', '{0} 已成功上传');"; 
     ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", string.Format(js, fileName), true); 
     } 
     else 
     { 
     const string js = "window.parent.onComplete('error', '上传文件出错');"; 
     ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true); 
     } 
     uploadInfo.IsReady = false; 
     } 
     } 

    代码就不贴完了,直接上干货,亲,这可是免邮的哦!下载地址

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    版权声明

    本文仅代表作者观点。
    本文系作者授权发表,未经许可,不得转载。

    发表评论