C#实现文件上传与下载功能实例_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站、c语言、cf、ch、c罗,以便于您获取更多的相关知识。

时间: 2024-10-27 07:32:30

C#实现文件上传与下载功能实例_C#教程的相关文章

MyBatis与SpringMVC相结合实现文件上传、下载功能_java

环境:maven+SpringMVC + Spring + MyBatis + MySql 本文主要说明如何使用input上传文件到服务器指定目录,或保存到数据库中:如何从数据库下载文件,和显示图像文件并实现缩放. 将文件存储在数据库中,一般是存文件的byte数组,对应的数据库数据类型为blob. 首先要创建数据库,此处使用MySql数据库. 注意:文中给出的代码多为节选重要片段,并不齐全. 1. 前期准备 使用maven创建一个springMVC+spring+mybatis+mysql的项目

拥有网页版小U盘 ASP.NET实现文件上传与下载功能_实用技巧

今天看到了一篇不错的文章,就拿来一起分享一下吧. 实现的是文件的上传与下载功能. 关于文件上传: 谈及文件上传到网站上,首先我们想到的就是通过什么上传呢?在ASP.NET中,只需要用FileUpload控件即可完成,但是默认上传4M大小的数据,当然了你可以在web.config文件中进行修改,方式如下: <system.web> <httpRuntime executionTimeout="240" maxRequestLength="20480"

Android关于FTP文件上传和下载功能详解

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 此篇博客为整理文章,供大家学习. 1.首先下载commons-net  jar包,可以百度下载. FTP的文件上传和下载的工具类: package ryancheng.example.progressbar; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.Outpu

JavaWeb文件上传与下载功能解析_java

在开发过程中文件的上传下载很常用.这里简单的总结一下: 1.文件上传必须满足的条件: a. 页面表单的method必须是post 因为get传送的数据太小了 b. 页面表单的enctype必须是multipart/form-data类型的 c. 表单中提供上传输入域 代码细节: 客户端表单中:<form enctype="multipart/form-data"/> (如果没有这个属性,则服务端读取的文件路径会因为浏览器的不同而不同) 服务端ServletInputStre

VB.Net Socket实现Http文件上传及下载类如何使用

问题描述 VB.Net Socket实现Http文件上传及下载类如何使用 门外汉求指教. 1.平台:SQL 2008 & appserv & mysql,VS2010 2.问题:①为实现文件上传.下载功能: ②参照了http://www.newxing.com/Tech/DotNet/VBDotNet/Socket_213.html 3.提问:①已添加上述网站中WebClient模块,现调用httpClient.UploadFile httpClient.DownLoadFile,WinF

JavaWeb实现文件上传与下载实例详解_java

 在Web应用程序开发中,文件上传与下载功能是非常常用的功能,下面通过本文给大家介绍JavaWeb实现文件上传与下载实例详解. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,common-fileupload是依赖于

Java实现FTP文件的上传和下载功能的实例代码_java

FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件.在FTP的使用当中,用户经常遇到两个概念:"下载"(Download)和"上传"(Upload)."下载"文件就是从远程主机拷贝文件至自己

Android实现文件上传和下载倒计时功能的圆形进度条

screenshot 截图展示 import step1. Add it in your root build.gradle at the end of repositories: allprojects { repositories { ... maven { url 'https://jitpack.io' } } } step2. Add the dependency dependencies { compile 'com.github.yanjiabin:ExtendsRingPrigr

使用springMVC实现文件上传和下载之环境配置与上传

最近的项目中用到了文件的上传和下载功能,任务分配给了其他的同时完成.如今项目结束告一段落,我觉着这个功能比较重要,因此特意把它提取出来自己进行了尝试. 一. 基础配置: maven导包及配置pom.xml,导包时除开springmvc的基础依赖外,需要导入文件上传下载时用到的commons-io.jsr和commons-fileupload.jar: [html] view plain copy   <project xmlns="http://maven.apache.org/POM/4