C# ASP 上传/下载文件

1.  上传文件前台页面

1            <div style="padding-left:20px;">
2                <asp:FileUpload ID="FileUpload1" runat="server" style="width:400px;"/>
3                <asp:Button ID="Button1" runat="server" OnClick="Upload_Click" Text="上传" style="width:65px;height:22px"></asp:Button >
4             </div>

  上传文件后台代码

 1     private string _directory = @"../Questionnaire35";
 2
 3     protected void Upload_Click(object sender, EventArgs e)
 4     {
 5         try
 6         {
 7             if (Request.Files.Count > 0)
 8             {
 9                 if (string.IsNullOrEmpty(Request.Files[0].FileName))
10                 {
11                     return;
12                 }
13                 //判断文件大小
14                 int length = Request.Files[0].ContentLength;
15                 if (length > 1048576)
16                 {
17                     Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert(‘文件大于1M,不能上传‘);</script>");
18                     return;
19                 }
20
21                 string type = Request.Files[0].ContentType;
22                 string fileExt = Path.GetExtension(Request.Files[0].FileName).ToLower();
23                 //只能上传图片,过滤不可上传的文件类型
24                 string fileFilt = ".xlsx|.xls|.docx|.doc|......";
25                 if (fileFilt.IndexOf(fileExt) <= -1)
26                 {
27                     Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert(‘只能上传文档‘);</script>");
28                     return;
29                 }
30                 else
31                 {
32                     UserInfo user = (UserInfo)Session["UserInfo"];
33                     //string fileName = Server.MapPath(_directory) + "\\" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + fileExt;
34                     string fileName = Server.MapPath(_directory) + "\\" + user.Pkid + fileExt;
35                     Request.Files[0].SaveAs(fileName);
36                     Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert(‘上传成功‘);</script>");
37                     Answer answer = (Answer)Session["Answer"];
38                     answer.Answer35 = "done";
39                 }
40             }
41         }
42         catch
43         {
44             throw new Exception();
45         }
46     }

  需要引入 using System.IO;

2. 下载文件前台页面

1 <asp:LinkButton runat="server" ID="DownLoadQuestionnaire" Text="下载文件" OnClick="DownLoadQuestionnaire_Click" />

下载文件后台代码

 1     protected void DownLoadQuestionnaire_Click(object sender, EventArgs e)
 2     {
 3         Response.ContentType = "application/x-zip-compressed";
 4
 5         string docName = "中高职衔接院校调研问卷.docx"; //文件路径
 6         docName = HttpUtility.UrlEncode(docName, System.Text.Encoding.UTF8);
 7         Response.AddHeader("Content-Disposition", "attachment;filename=" + docName);
 8         string filename = Server.MapPath("DownLoad/中高职衔接院校调研问卷.docx");
 9         //指定编码 防止中文文件名乱码
10         Response.HeaderEncoding = System.Text.Encoding.GetEncoding("GB2312");
11         Response.TransmitFile(filename);
12
13     }

  值得注意的就是文件名设置一下编码,不然出现下载时文件名乱码:

  HttpUtility.UrlEncode(docName, System.Text.Encoding.UTF8);

  据说还有很多种下载方式,没一个一个的试验:

 1     protected void DownLoadQuestionnaire_Click(object sender, EventArgs e)
 2     {
 3         string fileName = "asd.txt";//客户端保存的文件名
 4         string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
 5
 6         FileInfo fileInfo = new FileInfo(filePath);
 7         Response.Clear();
 8         Response.ClearContent();
 9         Response.ClearHeaders();
10         Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
11         Response.AddHeader("Content-Length", fileInfo.Length.ToString());
12         Response.AddHeader("Content-Transfer-Encoding", "binary");
13         Response.ContentType = "application/octet-stream";
14         Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
15         Response.WriteFile(fileInfo.FullName);
16         Response.Flush();
17         Response.End();
18
19     }
20
21     protected void DownLoadQuestionnaire_Click(object sender, EventArgs e)
22     {
23         string fileName = "aaa.txt";//客户端保存的文件名
24         string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
25         System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
26         if (fileInfo.Exists == true)
27         {
28             const long ChunkSize = 102400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
29             byte[] buffer = new byte[ChunkSize];
30
31             Response.Clear();
32             System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
33             long dataLengthToRead = iStream.Length;//获取下载的文件总大小
34             Response.ContentType = "application/octet-stream";
35             Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
36             while (dataLengthToRead > 0 && Response.IsClientConnected)
37             {
38                 int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
39                 Response.OutputStream.Write(buffer, 0, lengthRead);
40                 Response.Flush();
41                 dataLengthToRead = dataLengthToRead - lengthRead;
42             }
43             Response.Close();
44         }
45     }
46
47     protected void DownLoadQuestionnaire_Click(object sender, EventArgs e)
48     {
49         string fileName = "aaa.txt";//客户端保存的文件名
50         string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
51
52         //以字符流的形式下载文件
53         FileStream fs = new FileStream(filePath, FileMode.Open);
54         byte[] bytes = new byte[(int)fs.Length];
55         fs.Read(bytes, 0, bytes.Length);
56         fs.Close();
57         Response.ContentType = "application/octet-stream";
58         //通知浏览器下载文件而不是打开
59         Response.AddHeader("Content-Disposition", "attachment;  filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
60         Response.BinaryWrite(bytes);
61         Response.Flush();
62         Response.End();
63     }
时间: 2024-10-11 00:32:32

C# ASP 上传/下载文件的相关文章

SFTP上传下载文件

secureCRT SFTP上传/下载文件 远程登陆IP secureCRT会话中点击SFTP 3.cd  /home/dowload       linux平台切换到/home/dowload目录 4.cd d:\   windows平台切换到d盘 5.put 文件名           上传 /home/dowload目录下 6.get 文件名   下载文件到windows平台 d盘

Linux上传下载文件

2种方式:xftp(工具).lrzsz xftp:协议--SFTP.端口号--22 lrzsz: rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具. 优点就是不用再开一个sftp工具登录上去上传下载文件. sz(下载):将选定的文件发送(send)到本地机器 rz(上传):运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器 安装命令:yum install lrzsz 从服务端发送文件到客户端:sz filename 从客户端上传文件到服务

向云服务器上传下载文件方法汇总(转)

转载于:https://yq.aliyun.com/articles/64700 摘要: 一.向Windows服务器上传下载文件方式 方法有很多种,此处介绍远程桌面的本地资源共享方法. 1.运行mstsc,连接远程桌面的时候,点"选项>>" 2."本地资源"-->详细信息. 3."磁盘驱动器"前面打钩. 一.向Windows服务器上传下载文件方式 方法有很多种,此处介绍远程桌面的本地资源共享方法. 1.运行mstsc,连接远程桌

向linux服务器上传下载文件方式收集

向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证 . 命令格式: scp [参数] <源地址(用户名@IP地址或主机名)>:<文件路径> <目的地址(用户名 @IP 地址或主机名)>:<文件路径> 举例: scp /home/work/source.

rz和sz上传下载文件工具lrzsz

######################### rz和sz上传下载文件工具lrzsz ############################################################ 1 rpm -qa |grep lrzsz 如果没有用RPM安装即可: 2 rpm -ivh lrzsz-0.12.20-27.1.el6.x86_64.rpm (去光盘里找) 或者 yum install -y lrzsz 即可. ###########################

WebService中实现上传下载文件

不多说,直接看代码: /*上传文件的WebService*/ using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Web; using System.Web.Services; using System.IO; /// <summ

python 实现ssh远程执行命令 上传下载文件

使用密码远程执行命令 [[email protected] script]# cat daramiko_ssh.py  #!/usr/bin/env python #_*_coding:utf-8 _*_ __author__ = 'gaogd' import paramiko import sys,os host = sys.argv[1] user = 'root' password = 'ddfasdsasda2015' cmd = sys.argv[2] s = paramiko.SSH

linux下lrzsz安装过程,SecureCRT上传下载文件工具

linux下lrzsz安装过程,SecureCRT上传下载文件工具 1.从下面的地址下载 lrzsz-1.12.20.tar.gz http://down1.chinaunix.net/distfiles/lrzsz-0.12.20.tar.gz 2.查看里面的INSTALL文档了解安装参数说明和细节 3.解压文件 tar zxvf lrzsz-1.12.20.tar.gz 4.进入目录 cd lrzsz-1.12.20 5../configure --prefix=/usr/local/lrz

SFTP上传下载文件、文件夹常用操作

SFTP上传下载文件.文件夹常用操作 1.查看上传下载目录lpwd 2.改变上传和下载的目录(例如D盘):lcd  d:/ 3.查看当前路径pwd 4.下载文件(例如我要将服务器上tomcat的日志文件取出来)进入你要下的文件所在的文件夹:cd /usr/apache-tomcat-6.0.39/logs/下载:get catalina.out 5.上传文件(例如我要上传一个文件到usr目录下)进入你想要上传文件的目录cd /usr上传文件put do.sh 6.上传下载文件夹格式:下载文件夹g