C#实现文件上传与下载功能实例
最近学习了 C#实现文件上传与下载,现在分享给大家。
1、C#文件上传
创建MyUpload.htm页面,用于测试
<form name="form1" method="post" action="UploadFile.aspx" id="form1" enctype="multipart/form-data"> <input type="file" id="txtFile" name="picfile" /></br> <input type="submit" value="上传" /> </form>
创建UploadFile.aspx文件,在UploadFile.aspx.cs键入如下代码:
Random rnd = new Random(); //产生随机数 private string _directory = @"/File/UploadFile"; //目录 protected void Page_Load(object sender, EventArgs e) { try { if (RequestFilesCount > 0) { //判断文件大小 int length = RequestFiles[0]ContentLength; if (length > 1048576) { ResponseWrite("文件大于1M,不能上传"); return; } string type = RequestFiles[0]ContentType; string fileExt = PathGetExtension(RequestFiles[0]FileName)ToLower(); //只能上传图片,过滤不可上传的文件类型 string fileFilt = "gif|jpg|php|jsp|jpeg|png|"; if (fileFiltIndexOf(fileExt) <= -1) { ResponseWrite("对不起!请上传图片!!"); return; } else { string fileName = ServerMapPath(_directory) + "\\" + DateTimeNowToString("yyyyMMddHHmmssfff") + rndNext(10, 99)ToString() + fileExt; RequestFiles[0]SaveAs(fileName); ResponseWrite("上传成功!"); } } } catch { throw new Exception(); } }
2 、C#文件下载
创建DownloadFile.aspx,在DownloadFile.aspx.cs键入如下方法:
/// <summary> /// C#文件下载 /// </summary> /// <param name="filename"></param> public void MyDownload(string filename) { string path = ServerMapPath("/File/"+filename); if(!FileExists(path)) { ResponseWrite("对不起!文件不存在!!"); return; } SystemIOFileInfo file = new SystemIOFileInfo(path); string fileFilt="asp|aspx|php|jsp|ascx|config|asa|"; //不可下载的文件,务必要过滤干净 string fileName = fileName; string fileExt = fileNameSubstring(filenameLastIndexOf(""))Trim()ToLower(); if(fileFiltIndexOf(fileExt)!=-1) { ResponseWrite("对不起!该类文件禁止下载!!"); } else { ResponseClear(); ResponseAddHeader("Content-Disposition", "attachment; filename=" + HttpUtilityUrlEncode(fileName)); ResponseAddHeader("Content-Length", fileLengthToString()); ResponseContentType = GetContentType(HttpUtilityUrlEncode(fileExt)); ResponseWriteFile(fileFullName); ResponseEnd(); } } /// <summary> /// 获取下载类型 /// </summary> /// <param name="fileExt"></param> /// <returns></returns> public string GetContentType(string fileExt) { string ContentType; switch (fileExt) { case "asf": ContentType = "video/x-ms-asf"; break; case "avi": ContentType = "video/avi"; break; case "doc": ContentType = "application/msword"; break; case "zip": ContentType = "application/zip"; break; case "xls": ContentType = "application/vndms-excel"; break; case "gif": ContentType = "image/gif"; break; case "jpg": ContentType = "image/jpeg"; break; case "jpeg": ContentType = "image/jpeg"; break; case "wav": ContentType = "audio/wav"; break; case "mp3": ContentType = "audio/mpeg3"; break; case "mpg": ContentType = "video/mpeg"; break; case "mepg": ContentType = "video/mpeg"; break; case "rtf": ContentType = "application/rtf"; break; case "html": ContentType = "text/html"; break; case "htm": ContentType = "text/html"; break; case "txt": ContentType = "text/plain"; break; default: ContentType = "application/octet-stream"; break; } return ContentType; }
*如何获取现有文件的ContentType属性
/// <summary> /// 获取现有文件的ContentType属性 /// </summary> /// <param name="filename"></param> /// <returns></returns> public string GetFileContentType(string filename) { string[] array = filenameSplit(''); string result = stringEmpty; string suffix = "" + array[arrayLength - 1]; MicrosoftWinRegistryKey rg = MicrosoftWinRegistryClassesRootOpenSubKey(suffix); object obj = rgGetValue("Content Type"); result = obj != null ? objToString() : stringEmpty; rgClose(); return result; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
栏 目:C#教程
下一篇:C#中将DataTable转化成List&lt;T&gt;的方法解析
本文标题:C#实现文件上传与下载功能实例
本文地址:https://www.xiuzhanwang.com/a1/C_jiaocheng/6137.html
您可能感兴趣的文章
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新闻效果的方法
- 01-10C#实现清空回收站的方法
- 01-10C#实现读取注册表监控当前操作系统已安装软件变化的方法
- 01-10C#实现多线程下载文件的方法
- 01-10C#实现Winform中打开网页页面的方法
- 01-10C#实现远程关闭计算机或重启计算机的方法
- 01-10C#自定义签名章实现方法
- 01-10C#文件断点续传实现方法
- 01-10winform实现创建最前端窗体的方法
阅读排行
本栏相关
- 01-10C#通过反射获取当前工程中所有窗体并
- 01-10关于ASP网页无法打开的解决方案
- 01-10WinForm限制窗体不能移到屏幕外的方法
- 01-10WinForm绘制圆角的方法
- 01-10C#实现txt定位指定行完整实例
- 01-10WinForm实现仿视频播放器左下角滚动新
- 01-10C#停止线程的方法
- 01-10C#实现清空回收站的方法
- 01-10C#通过重写Panel改变边框颜色与宽度的
- 01-10C#实现读取注册表监控当前操作系统已
随机阅读
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 04-02jquery与jsp,用jquery
- 01-10C#中split用法实例总结
- 01-10SublimeText编译C开发环境设置
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 01-10delphi制作wav文件的方法
- 01-11ajax实现页面的局部加载