zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    iOS中循环引用的解除
    Block的循环引用详解
    Mac OS X下面 Node.js环境的搭建
    swift中闭包和OC的block的对比
    STL priority_queue
    优先使用map(或者unordered_map)的find函数而非algorithm里的find函数
    Insert Interval
    Integer Break
    Unique Binary Search Trees
    腾讯2016实习生笔试
  • 原文地址:https://www.cnblogs.com/strivers/p/1946109.html
Copyright © 2011-2022 走看看