c#单文件上传下载源代码

文件上传这里分上传到服务器的文件夹和数据库
1:上传到文件夹
首先看aspx页面:
程序代码: 
<tr bgcolor="#ffffff">
<td height="24">
<input type="file" id="Up_file" class="edline" runat="server" style="WIDTH: 456px; HEIGHT: 20px" size="60" name="Up_file">
</td>
</tr>
<TR bgcolor="#ffffff">
<TD height="24" align="center">
<asp:Button ID="submit" Runat="server" Text="文件上传" CssClass="Cmdbut" Height="20px"></asp:Button>
</TD>
</TR>

下面是后台,及"文件上传"按钮触发的事件:
程序代码: 
private void submit_Click(object sender, System.EventArgs e)
{
HttpPostedFile postedFile = this.Up_file.PostedFile; //得到要上传文件
string fileName, fileExtension;
fileName = System.IO.Path.GetFileName(postedFile.FileName); //文件名称
if (fileName != "")
{
fileExtension = System.IO.Path.GetExtension(fileName); //上传文件的扩展名
string new_filename = fileExtension; //给文件重新命名
//postedFile.FileName: 客户端文件地址
//postedFile.ContentType.ToString(): 上传的文件类型
//保存文件到文件夹,地址是当前页面的同一级目录下的files文件夹中
postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("files/") + new_filename); 
//.....可以把文件的相应信息保存到数据库中去。
}

在显示这些文件信息的时候,可以直接链接文件地址。

2:上传到数据库
程序代码: 
private void submit_Click(object sender, System.EventArgs e)
{
Stream imgStream;
int docSize;
string docName;
string imgContentType;
string imgUploadedName;
imgStream = this.Up_file.PostedFile.InputStream; //二进制流
docSize = this.Up_file.PostedFile.ContentLength; //文件大小
imgUploadedName = this.Up_file.PostedFile.FileName; //文件名称
byte[] docBody=new byte[docSize];
imgContentType = this.Up_file.PostedFile.ContentType; //文件类型
docName =imgUploadedName.Substring(imgUploadedName.LastIndexOf(‘\\‘)+1);
int n = imgStream.Read(docBody, 0, docSize); 
DataTable temp = mynew.Get_ZH_EngBriefing_byoid(0); //返回一个空的table
DataRow row = temp.NewRow();
//.....省略其他保存代码
row["DOWN_PATH"] = docBody; //保存数据到数据库,DOWN_PATH字段为二进制
row["FILENAME"] = docName; //保存文件名称
row["LX"] = imgContentType; //保存文件类型
temp.Rows.Add(row);
mynew.SaveZHEngBriefing(temp); 
}

在显示这些文件信息时,如果要实现下载,可以参考下面的代码:
1):当放置到datagrid中时,必须绑定数据到模板列,比如:
程序代码: 
<asp:TemplateColumn HeaderText="文件下载">
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
<ItemStyle HorizontalAlign="Center"></ItemStyle>
<ItemTemplate>
<asp:LinkButton id=downLink runat="server" ToolTip=‘<%# "下载文件:"+DataBinder.Eval(Container.DataItem,"FILENAME").ToString() %>‘ Text=‘<%# DataBinder.Eval(Container.DataItem,"FILENAME").ToString() %>‘ CommandName="downFile">
</asp:LinkButton>
</ItemTemplate>
<FooterStyle HorizontalAlign="Center"></FooterStyle>
</asp:TemplateColumn>

利用datagrid的ItemCommand事件来实现下载
程序代码: 
private void Eng_briefing_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
if (e.CommandName == "downFile")
{
long EngBriefing_OID = long.Parse(Eng_briefing.Items[e.Item.ItemIndex].Cells[0].Text.ToString()); //首先返回要下载数据的相应行记录关键字OID
DataTable file = mynew.Get_ZH_EngBriefing_byoid(EngBriefing_OID); //获取该文件所在行记录(这里Get_ZH_EngBriefing_byoid方法是我自己的一个定义的根据OID来返回table)
if (file.Rows.Count > 0)
{
Response.Clear();
Response.Buffer = false;
Response.AppendHeader("Content-Disposition","attachment; filename="+HttpUtility.UrlEncode(file.Rows[0]["FILENAME"].ToString(),System.Text.Encoding.UTF8));
Response.BinaryWrite((byte[])file.Rows[0]["DOWN_PATH"]);
Response.End(); 
}

}
}

当文件信息以一个LinkButton显示出来的话,就可以利用lLinkButton的onclick事件来实现:
程序代码: 
<asp:linkbutton id="FileLink" runat="server"></asp:linkbutton>

程序代码: 
private void FileLink_Click(object sender, System.EventArgs e)
{
long EngBriefing_OID = long.Parse(this.L_EngBriefing_OID.Text.ToString()); //取得文件所在行的相应OID
DataTable file = mynew.Get_ZH_EngBriefing_byoid(EngBriefing_OID); //获取文件所在行信息
if (file.Rows.Count > 0)
{
Response.Clear();
Response.Buffer = false;
Response.AppendHeader("Content-Disposition","attachment; filename="+HttpUtility.UrlEncode(file.Rows[0]["FILENAME"].ToString(),System.Text.Encoding.UTF8));
Response.BinaryWrite((byte[])file.Rows[0]["DOWN_PATH"]);
Response.End(); 
}
}

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lsynb/archive/2008/04/21/2311437.aspx

时间: 2024-10-03 13:48:28

c#单文件上传下载源代码的相关文章

文件上传表单 上传文件的细节 文件上传下载和数据库结合

1 文件上传表单   1)上传文件的本质是文本复制的过程   2)技术层面,在Java中一定会用到IO操作,主要以二进制方式读写   3)传统方式下,对于上传文件字段不同的浏览器有着不同的解析方式,例如:     IE6:upfile=c:\aa\bb\a.JPG     非IE6: upfile=a.JPG   4)可以将form以MIME协议的方式将上传文件传递到服务端,服务端以二进制流的方式读写     代码:客户端form enctype="multipart/form-data&quo

2014-07-23 利用ASP.NET自带控件实现单文件上传与下载

效果图 上传文件页面: 下载文件页面:  1.母版页site.Master <%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="upAndDown.SiteMaster" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict/

文件上传下载样式 --- bootstrap

在平时工作中,文件上传下载功能属于不可或缺的一部分.bootstrap前端样式框架也使用的比较多,现在根据bootstrap强大的样式模板,自定义一种文件下载的样式. 后续会使用spring MVC框架实现文件上传的全部代码,敬请期待. 先看图片示例: 本示例包括下载样本文件样式和上传文件样式. 直接先上代码,最后讲解: <div class="form-group col-md-12 has-feedback" id="file"> <label

深入分析JavaWeb Item47 -- Struts2拦截器与文件上传下载

一.struts2中的拦截器(框架功能核心) 1.过滤器VS拦截器 过滤器VS拦截器功能是一回事. 过滤器是Servlet规范中的技术,能够对请求和响应进行过滤. 拦截器是Struts2框架中的技术.实现AOP(面向切面)的编程思想.是可插拔的, 能够对訪问某个 Action 方法之前或之后实施拦截. 拦截器栈(Interceptor Stack): 将拦截器按一定的顺序联结成一条链. 在訪问被拦截的方法时, Struts2拦截器链中的拦截器就会按其之前定义的顺序被依次调用 Struts2运行原

java web 文件上传下载

文件上传下载案例: 首先是此案例工程的目录结构: 处理上传: FileUploadServlet.java 1 package fnz.fileUploadTest; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.PrintWriter; 7 import java.text.SimpleDateFormat; 8 import java.

文件上传下载—servlet API实现

servlet API实现文件上传下载需要的jar包: UploadServlet.java package com.ymw.web.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.UUID; import javax.servl

SpringMVC实现单文件上传、多文件上传、文件列表显示、文件下载

林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload.jar+connom-io.jar+commons-logging,jar+jstl.jar+standard.jar 整个相关的包如下: 整个工程目录如下: 二.配置web.xml和SpringMVC文件

开源项目OkHttpPlus——支持GET、POST、UI线程回调、JSON格式解析、链式调用、文件上传下载

OkHttpPlus介绍 项目地址:https://github.com/ZhaoKaiQiang/OkHttpPlus 主要功能:OkHttp封装,支持GET.POST.UI线程回调.JSON格式解析.链式调用.小文件上传下载及进度监听等功能 为什么要写这么一个库呢? 首先,是因为OkHttp在4.4之后已经作为底层的Http实现了,所以OkHttp这个库很强大,值得我们学习. 其次,在我看来,OkHttp使用起来不如Volley方便,OkHttp的回调都是在工作线程,所以如果在回调里面操作V

SpringMVC文件上传下载

在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/qixiaoyizhan/p/5819392.html 今天我们来讲讲spring mvc中的文件上传和下载的几种方法. 首先附上文件目录->我们需要配置的我做了记号-> 一.文件上传 首先为了方便后续的操作,以及精简代码,我们在Utils包下封装一个文件上传下载的帮助类: Files_Helper