文件以二进制形式上传和下载(asp.net)

 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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值