博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
步步为营-70-asp.net简单练习(文件的上传和下载)
阅读量:5140 次
发布时间:2019-06-13

本文共 4656 字,大约阅读时间需要 15 分钟。

大文件的上传一般通过FTP协议,而一般小的文件可以通过http协议来完成

1 通过asp.net 完成图片的上传

1.1 创建html页面

  注意:1 method="post" ;2 enctype="multipart/form-data"; 3 <input type="file" />  

FileUpload.html

1.2 创建一般处理程序.ashx

  注意:1 创建文件保存路径

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;namespace _05_文件的上传与下载{    ///     /// FileUpload 的摘要说明    ///     public class FileUpload : IHttpHandler    {        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/html";            //01 获取文件            HttpPostedFile pf = context.Request.Files["imgUpLoad"];            //02 创建文件保存路径            string savePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory+"Upload/"+pf.FileName);            //03 保存文件            pf.SaveAs(savePath);            //04 显示上传的文件            context.Response.Write(" ");        }        public bool IsReusable        {            get            {                return false;            }        }    }}
FileUpload.ashx

2 上传文件格式的验证,假设规定只能上传,gif的图片

  我们可以在HTML通过jQuery来进行验证,也可以在.ashx中进行验证

2.1 修改ashx文件

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;namespace _05_文件的上传与下载{    ///     /// FileUpload 的摘要说明    ///     public class FileUpload : IHttpHandler    {        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/html";            //01 获取文件            HttpPostedFile pf = context.Request.Files["imgUpLoad"];            //01-01 获取文件后缀名            string extName = pf.FileName.Substring(pf.FileName.LastIndexOf('.'));            if (extName != ".gif" || extName != ".Gif")            {                context.Response.Write("请上传.gif图片");                return;            }            //02 创建文件保存路径            string savePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory+"Upload/"+pf.FileName);            //03 保存文件            pf.SaveAs(savePath);            //04 显示上传的文件            context.Response.Write(" ");        }        public bool IsReusable        {            get            {                return false;            }        }    }}
ashx

2.2 引入jQuery,修改HTML页面

html

3 如果文件只放在Upload文件夹下,随着时间的增长,文件势必会越来越多不利于寻找,可以根据日期建立相应文件夹

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;namespace _05_文件的上传与下载{    ///     /// FileUpload 的摘要说明    ///     public class FileUpload : IHttpHandler    {        public void ProcessRequest(HttpContext context)        {            context.Response.ContentType = "text/html";            //01 获取文件            HttpPostedFile pf = context.Request.Files["imgUpLoad"];            //01-01 获取文件后缀名            string extName = pf.FileName.Substring(pf.FileName.LastIndexOf('.'));            if (extName != ".gif" && extName != ".GIF")            {                context.Response.Write("请上传.gif图片");                return;            }            //02 创建文件保存路径            string savePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory+"Upload\\");            //02-01 根据日期创建文件夹            DateTime dt = DateTime.Now;            savePath += dt.Year + "\\" + dt.Month + "\\" + dt.Day ;            if (!Directory.Exists(savePath))            {                //创建文件夹                Directory.CreateDirectory(savePath);            }            //02-02文 件名为当前时间                        savePath += "\\"+ dt.ToString().Replace(':','-')+".gif";            //03 保存文件            pf.SaveAs(savePath);            //04 显示上传的文件             context.Response.Write(" ");        }        public bool IsReusable        {            get            {                return false;            }        }    }}
ashx

4 文件下载

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Web;namespace _05_文件的上传与下载{    ///     /// FileDownload 的摘要说明    ///     public class FileDownload : IHttpHandler    {        public void ProcessRequest(HttpContext context)        {            string f = context.Request["f"];            context.Response.ContentType = "application/octet-stream";            context.Response.AddHeader("Content-Disposition","attachment;filename=\""+f+"\";");            context.Response.WriteFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,f));        }        public bool IsReusable        {            get            {                return false;            }        }    }}
ashx

转载于:https://www.cnblogs.com/YK2012/p/7009993.html

你可能感兴趣的文章
shim和polyfill有什么区别
查看>>
Failed to load the JNI shared library “E:/2000/Java/JDK6/bin/..jre/bin/client/jvm.dll
查看>>
Zabbix3.4服务器的搭建--CentOS7
查看>>
〖Python〗-- IO多路复用
查看>>
栈(括号匹配)
查看>>
夜太美---酒不醉--人自醉
查看>>
Java学习 · 初识 面向对象深入一
查看>>
源代码如何管理
查看>>
vue怎么将一个组件引入另一个组件?
查看>>
多线程学习笔记三之ReentrantLock与AQS实现分析
查看>>
【转】进程与线程的一个简单解释
查看>>
getopt,getoptlong学习
查看>>
数据的传递 变量与参数的使用
查看>>
Razor项目所感(上)
查看>>
移动互联网服务客户端开发技巧系列
查看>>
《Spring》(十五)---@AspectJ
查看>>
使用visio 2010建立sql server数据模型——手动画、利用逆向工程
查看>>
篮球赛
查看>>
HihoCoder - 1339 Dice Possibility(概率dp)
查看>>
js中call、apply、bind的用法
查看>>