Default.aspx.cs(上传)
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (this.fileUpload.PostedFile.FileName == "")
{
Response.Write("<script language=javascript>alert('不能上传空文件')</script>");
return;
}
SqlConnection con = new SqlConnection("server=zhan;database=download;uid=sa;pwd=zhan");
con.Open();
try
{
string path = Server.MapPath("upload/");//保存上传文件的文件夹upload虚拟路径对应的实际路径
string filePath = this.fileUpload.PostedFile.FileName;//客户端文件的完全限定名
string serverPath = path + filePath.Substring(filePath.LastIndexOf("//") + 1);//上传的文件保存在服务器端的路径
string fileName = filePath.Substring(filePath.LastIndexOf("//") + 1);//文件名
string fileType = this.fileUpload.PostedFile.ContentType.ToString();//文件类型
System.IO.Stream streamFile = this.fileUpload.PostedFile.InputStream;//建立数据流对象
int fileLength = this.fileUpload.PostedFile.ContentLength;//文件长度以字节为单位
byte[] fileData = new Byte[fileLength];//新建一个数组
streamFile.Read(fileData, 0, fileLength);//将这个数据流读取到数组中
SqlCommand cmd = new SqlCommand("insertFile", con);//启用存储过程
cmd.CommandType = CommandType.StoredProcedure;//指定类型
cmd.Parameters.Add("@fileName", SqlDbType.VarChar, 200);
cmd.Parameters["@fileName"].Value = fileName;
cmd.Parameters.Add("@filePath", SqlDbType.VarChar, 300);
cmd.Parameters["@filePath"].Value = serverPath;
cmd.Parameters.Add("@fileType", SqlDbType.VarChar, 50);
cmd.Parameters["@fileType"].Value = fileType;
cmd.Parameters.Add("@fileData", SqlDbType.Image);
cmd.Parameters["@fileData"].Value = fileData;
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
con.Close();
}
Response.Write("<script language=javascript>alert('文件上传成功!')</script>");
}
protected void btnDownLoad_Click(object sender, EventArgs e)
{
Response.Redirect("DownLoad.aspx");
}
}
DownLoad.aspx(下载)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="DownLoad.aspx.cs" Inherits="DownLoad" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>文件以二进制形式桑传和下载</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<div style="z-index: 100; left: 145px; width: 777px; position: absolute; top: 79px;
height: 301px">
<asp:DataGrid ID="DataGrid1" runat="server" Height="131px" OnItemCommand="DataGrid1_ItemCommand"
Width="768px" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None">
<Columns>
<asp:TemplateColumn HeaderText ="文件ID">
<ItemTemplate>
<%#Eval ("fileID") %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText ="文件名称">
<ItemTemplate>
<%#Eval("fileName")%>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText =" 下 载">
<ItemTemplate>
<asp:LinkButton ID ="btnDownLoad" runat ="server" CommandName ="DownLoad" CommandArgument ='<%#Eval("fileID","{0}") %>' OnClick="btnDownLoad_Click">下载文件</asp:LinkButton>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<EditItemStyle BackColor="#999999" />
<SelectedItemStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<AlternatingItemStyle BackColor="White" ForeColor="#284775" />
<ItemStyle BackColor="#F7F6F3" Font-Size="Small" ForeColor="#333333" HorizontalAlign="Center" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" Font-Size="Small" ForeColor="White"
HorizontalAlign="Center" />
</asp:DataGrid></div>
</div>
</form>
</body>
</html>
DownLoad.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.IO;
public partial class DownLoad : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.databindTodg();
}
}
private void databindTodg()
{
SqlConnection con = new SqlConnection("server=zhan;database=download;uid=sa;pwd=zhan");
con.Open();
string sql = "select * from study";
SqlDataAdapter sda = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
sda.Fill(ds);
this.DataGrid1.DataSource = ds.Tables[0].DefaultView;
this.DataBind();
}
protected void DataGrid1_ItemCommand(object source, DataGridCommandEventArgs e)
{
int fileID = Convert.ToInt32(e.CommandArgument.ToString());
SqlConnection con = new SqlConnection("server=zhan;database=download;uid=sa;pwd=zhan");
con.Open();
string sql = "select * from study where fileID='" + fileID + "'";
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
Response.Buffer = true;
Page.Response.Clear();//清除缓冲区所有内容
Page.Response.ContentType = "application/octet-stream";
Page.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(sdr["fileName"].ToString()));
byte[] file = (Byte[])sdr["fileData"];//读出数据
int a = file.Length;
Response.BinaryWrite(file);
Response.Flush();
Response.End();
sdr.Close();
con.Close();
}
protected void btnDownLoad_Click(object sender, EventArgs e)
{
}
}
SQL数据库:
create database download
use download
create table study
(
fileID int identity(1,1)primary key,
fileName varchar(200),
filePath varchar(300),
fileType varchar(50),
fileData image
)
create procedure insertFile--存储过程
@fileName varchar(200),
@filePath varchar(300),
@fileType varchar(50),
@fileData image
as
insert into study(fileName,filePath,fileType,fileData)
values(@fileName,@filePath,@fileType,@fileData)