C# ASP 上传/下载文件
1. 上传文件前台页面
<div style="padding-left:20px;">
<asp:FileUpload ID="FileUpload1" runat="server" style="width:400px;"/>
<asp:Button ID="Button1" runat="server" OnClick="Upload_Click" Text="上传" style="width:65px;height:22px"></asp:Button >
</div>
上传文件后台代码
private string _directory = @"../Questionnaire35";
protected void Upload_Click(object sender, EventArgs e)
{
try
{
if (Request.Files.Count > )
{
if (string.IsNullOrEmpty(Request.Files[].FileName))
{
return;
}
//判断文件大小
int length = Request.Files[].ContentLength;
if (length > )
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert('文件大于1M,不能上传');</script>");
return;
}
string type = Request.Files[].ContentType;
string fileExt = Path.GetExtension(Request.Files[].FileName).ToLower();
//只能上传图片,过滤不可上传的文件类型
string fileFilt = ".xlsx|.xls|.docx|.doc|......";
if (fileFilt.IndexOf(fileExt) <= -)
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert('只能上传文档');</script>");
return;
}
else
{
UserInfo user = (UserInfo)Session["UserInfo"];
//string fileName = Server.MapPath(_directory) + "\\" + DateTime.Now.ToString("yyyyMMddHHmmssfff") + fileExt;
string fileName = Server.MapPath(_directory) + "\\" + user.Pkid + fileExt;
Request.Files[].SaveAs(fileName);
Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "<script>alert('上传成功');</script>");
Answer answer = (Answer)Session["Answer"];
answer.Answer35 = "done";
}
}
}
catch
{
throw new Exception();
}
}
需要引入 using System.IO;
2. 下载文件前台页面
<asp:LinkButton runat="server" ID="DownLoadQuestionnaire" Text="下载文件" OnClick="DownLoadQuestionnaire_Click" />
下载文件后台代码
protected void DownLoadQuestionnaire_Click(object sender, EventArgs e)
{
Response.ContentType = "application/x-zip-compressed"; string docName = "中高职衔接院校调研问卷.docx"; //文件路径
docName = HttpUtility.UrlEncode(docName, System.Text.Encoding.UTF8);
Response.AddHeader("Content-Disposition", "attachment;filename=" + docName);
string filename = Server.MapPath("DownLoad/中高职衔接院校调研问卷.docx");
//指定编码 防止中文文件名乱码
Response.HeaderEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.TransmitFile(filename); }
值得注意的就是文件名设置一下编码,不然出现下载时文件名乱码:
HttpUtility.UrlEncode(docName, System.Text.Encoding.UTF8);
据说还有很多种下载方式,没一个一个的试验:
protected void DownLoadQuestionnaire_Click(object sender, EventArgs e)
{
string fileName = "asd.txt";//客户端保存的文件名
string filePath = Server.MapPath("DownLoad/aaa.txt");//路径 FileInfo fileInfo = new FileInfo(filePath);
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
Response.AddHeader("Content-Length", fileInfo.Length.ToString());
Response.AddHeader("Content-Transfer-Encoding", "binary");
Response.ContentType = "application/octet-stream";
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.WriteFile(fileInfo.FullName);
Response.Flush();
Response.End(); } protected void DownLoadQuestionnaire_Click(object sender, EventArgs e)
{
string fileName = "aaa.txt";//客户端保存的文件名
string filePath = Server.MapPath("DownLoad/aaa.txt");//路径
System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
if (fileInfo.Exists == true)
{
const long ChunkSize = ;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
byte[] buffer = new byte[ChunkSize]; Response.Clear();
System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
long dataLengthToRead = iStream.Length;//获取下载的文件总大小
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName));
while (dataLengthToRead > && Response.IsClientConnected)
{
int lengthRead = iStream.Read(buffer, , Convert.ToInt32(ChunkSize));//读取的大小
Response.OutputStream.Write(buffer, , lengthRead);
Response.Flush();
dataLengthToRead = dataLengthToRead - lengthRead;
}
Response.Close();
}
} protected void DownLoadQuestionnaire_Click(object sender, EventArgs e)
{
string fileName = "aaa.txt";//客户端保存的文件名
string filePath = Server.MapPath("DownLoad/aaa.txt");//路径 //以字符流的形式下载文件
FileStream fs = new FileStream(filePath, FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, , bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
C# ASP 上传/下载文件的更多相关文章
- rz和sz上传下载文件工具lrzsz
######################### rz和sz上传下载文件工具lrzsz ####################################################### ...
- linux上很方便的上传下载文件工具rz和sz
linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...
- shell通过ftp实现上传/下载文件
直接代码,shell文件名为testFtptool.sh: #!/bin/bash ########################################################## ...
- SFTP远程连接服务器上传下载文件-qt4.8.0-vs2010编译器-项目实例
本项目仅测试远程连接服务器,支持上传,下载文件,更多功能开发请看API自行开发. 环境:win7系统,Qt4.8.0版本,vs2010编译器 qt4.8.0-vs2010编译器项目实例下载地址:CSD ...
- linux下常用FTP命令 上传下载文件【转】
1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...
- C#实现http协议支持上传下载文件的GET、POST请求
C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; usin ...
- HttpClient上传下载文件
HttpClient上传下载文件 java HttpClient Maven依赖 <dependency> <groupId>org.apache.httpcomponents ...
- 初级版python登录验证,上传下载文件加MD5文件校验
服务器端程序 import socket import json import struct import hashlib import os def md5_code(usr, pwd): ret ...
- 如何利用京东云的对象存储(OSS)上传下载文件
作者:刘冀 在公有云厂商里都有对象存储,京东云也不例外,而且也兼容S3的标准因此可以利用相关的工具去上传下载文件,本文主要记录一下利用CloudBerry Explorer for Amazon S3 ...
随机推荐
- 绘图和可视化知识图谱-《利用Python进行数据分析》
所有内容整理自<利用Python进行数据分析>,使用MindMaster Pro 7.3制作,emmx格式,源文件已经上传Github,需要的同学转左上角自行下载或者右击保存图片. 其他章 ...
- As 布局文件太多很乱的问题
//添加自定义文件整理文件夹的方法,没有之一在build.gradle(Module: app)里加入布局需要放入的路径代码>>>>>> sourceSets { ...
- js 对象数组根据某个名称删除数组中的对象
delArrayItem: function (array,item) { const index = array.findIndex(text => text.name === item.na ...
- 足球动图gif(二)
- FileNotFoundError: [WinError 2] 系统找不到指定的文件。 解决方案
用Idle运行Python脚本的时候发现如下错误: Traceback (most recent call last): File "C:\Users\DangKai\Desktop\pyt ...
- 如何看待HTTP/3
前言 HTTP/2 相比于 HTTP/1.1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作,当然兼容问题以及如何优雅降级应该是国内还不普遍使用的原因之一. ...
- 深入探究JVM之内存结构及字符串常量池
前言 Java作为一种平台无关性的语言,其主要依靠于Java虚拟机--JVM,我们写好的代码会被编译成class文件,再由JVM进行加载.解析.执行,而JVM有统一的规范,所以我们不需要像C++那样需 ...
- 检查string是否有重复尝试用map
链接: 题意:输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本的另外一个单词.在判断是否满足条件时,字母不分大小写,但在输出时应保留输入的大小写,按字典序排列. 题解:先 ...
- chrome浏览器hover时文字抖动bug
今天发现一个奇怪的bug,chrome浏览器里面 当父标签定位为fixed时,hover里面子标签时,文本会发生抖动,百思不得其解,经过多方查证,发现解决办法 -webkit-transform: ...
- Jarvisoj-web phpinfo
题目入口:http://web.jarvisoj.com:32784/ 一进来就看到源码 简单分析之后知道考点是反序列化,注意到了关键字session_start(),这个函数是用于创建会话.但具体如 ...