ASP.NETファイルをダウンロードにアップロード

19643 ワード

本文は主にAPS.NETのファイルの簡単なアップロードはダウンロードで、アップロードはファイルをサーバーの指定したディレクトリの下にアップロードして、ダウンロードはデータベースに保存した経路から、サーバーからダウンロードします.
  1.ファイルのアップロード
(1)ページコード
   <table align="center" cellpadding="0" cellspacing="0" width="100%">
                <tr>
                    <td align="right">    :</td>
                    <td>
                        <asp:TextBox ID="FileName" runat="server"></asp:TextBox>
                    </td>
                    <td></td>
                </tr>  
                <tr>
                    <td align="right">  :</td>
                    <td>
                        <asp:FileUpload ID="FileUpload1" runat="server" />
                    </td>
                    <td></td>
                </tr>   
                <tr>
                    <td></td>
                    <td>
                        <asp:Button ID="UploadButton" runat="server" Text="  " 
                            onclick="UploadButton_Click" /><asp:Label ID="Msg" runat="server" ForeColor="#FF0000"></asp:Label>     
                    </td>
                    <td></td>
                </tr>               
        </table>

  (2).バックグラウンドコード
protected void UploadButton_Click(object sender, EventArgs e)
        {
            Msg.Text = "";
            MyWebSite.DAL.FileInfo file = new MyWebSite.DAL.FileInfo();
            if (string.IsNullOrEmpty(FileName.Text))
            {
                Msg.Text = "      ";
                return;
            }
            if (FileUpload1.HasFile)
            {
                try
                {

                    DateTime upload = DateTime.Now;
                    string flag = Path.GetExtension(FileUpload1.PostedFile.FileName);
                    string path = Server.MapPath("../Upload/" + FileUpload1.FileName);
                    string size = (FileUpload1.PostedFile.ContentLength / 1024).ToString();
                    FileUpload1.SaveAs(path);
                    file.FileName = FileName.Text.ToString();
                    file.Type = flag;//      
                    file.Size = size;//    
                    file.FilePath = path;//           
                    file.UploadTime = DateTime.Now.ToShortDateString();//    
                    handler.AddFile(file);//              
                    Msg.Text = "";
                }
                catch
                {

                    Msg.Text = "";
                }
            }
        }

  2.ファイルのダウンロード
(1)フロントページ
<asp:Repeater ID="Repeater1" runat="server" onitemcommand="down_file_Click">
    <ItemTemplate>       
          <table width="90%" align="center" border="1" cellpadding="1" cellspacing="0" bgcolor="#e1e1e1" class="title_font">
           <tr>
                <td class="title_font" width="10%"  align="center">    :</td>
                <td width="20%"align="center"><b><asp:Label ID="FileTitle" runat="server" Text='<%#Eval("    ") %>'></asp:Label></b></td>
                <td  width="6%"align="center">  :</td>
                <td width="6%"align="center"><%#Eval("  ") %></td>                
                <td width="10%" align="center">    :</td>
                <td  width="8%"align="center"><%#Eval("    ") %>KB</td>
                <td width="10%"align="center">    :</td>
                <td ><%#Eval("    ") %></td>
                <td  width="10%" colspan="2" align="center"><asp:LinkButton ID="LinkButton1" CommandArgument='<%#Eval("link") %>' runat="server">    </asp:LinkButton>
                </td>
            </tr>           
        </table>
        <br />
    </ItemTemplate>
</asp:Repeater>

(2)バックグラウンドコード
  1).データのバインド
        public void GrvDataBin(List<FileInfo> list)
        {

            DataView dv = new DataView();
            DataTable dt = new DataTable("fileMeta");
            {
                dt.Columns.Add("    ");
                dt.Columns.Add("  ");
                dt.Columns.Add("    ");
                dt.Columns.Add("    ");
                dt.Columns.Add("link");
            }
            foreach (FileInfo fileM in list)
            {
                DataRow row = dt.NewRow();
                row[0] = fileM.FileName;
                row[1] = fileM.Type;
                row[2] = fileM.UploadTime;
                row[3] = fileM.Size;
                row[4] = fileM.FilePath;
                dt.Rows.Add(row);
            }
            dv.Table = dt;
            Repeater1.DataSource = dv;
            Repeater1.DataBind();

        }

  2).ファイルのダウンロード
  
protected void down_file_Click(object sender, RepeaterCommandEventArgs e)
        {
            System.IO.FileStream fs = null;
            try
            {
                string filePath = e.CommandArgument.ToString();
                string fileName = ((Label)e.Item.FindControl("FileTitle")).Text.ToString();
                fs = System.IO.File.OpenRead(filePath);
                byte[] buffer = new byte[1024];
                long count = 1024;
                Response.Buffer = true;
                Response.AddHeader("Connection", "Keep-Alive");
                Response.ContentType = "application/octet-stream";
                Response.AddHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(System.IO.Path.GetFileName(filePath)));//            
                Response.AddHeader("Content-Length", fs.Length.ToString());
                while (count == 1024)
                {
                    count = fs.Read(buffer, 0, 1024);
                    Response.BinaryWrite(buffer);
                }

            }
            catch (Exception ex)
            {
                return;
            }
            finally
            {
                fs.Close();
            }
        }

以上で完了し、簡単なファイルのアップロードとダウンロードができます.