您的位置:首页 > 编程语言 > ASP

ASP.NET FileUpload以及文件下载和Repeater控件显示

2017-12-05 14:56 393 查看
WebForm1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="文件夹上传以及Repeater.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button runat="server" ID="btnUpload" Text="上传" OnClick="btnUpload_Click" />
</div>
<div>
文件下载:<br />
<asp:Repeater runat="server" ID="repeater1" >
<HeaderTemplate>
<table border="1">
<tr>
<td>文件顺序</td><td>文件下载</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Container.ItemIndex+1 %></td>
<td><asp:LinkButton runat="server" ID="linkbtnDownloda" Text='<%# Eval("filenames") %>' CommandArgument='<%#Eval("filepath") %>' OnCommand="linkbtnDownloda_Command"/> </td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>

</div>
</form>
</body>
</html>
WebForm1.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using System.IO;
using Model;
using BLL;
namespace 文件夹上传以及Repeater
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bind();
}
}
public void Bind()
{
this.repeater1.DataSource = BLL.FileManager.selectAllFile().Tables[0];
this.repeater1.DataBind();
}
///
protected void btnUpload_Click(object sender, EventArgs e)
{
string fullfilename=this.FileUpload1.PostedFile.FileName;
string filename = fullfilename.Substring(fullfilename.LastIndexOf("\\") + 1);
string filetype = fullfilename.Substring(fullfilename.LastIndexOf(".") + 1);
Response.Write("文件名:"+filename+",类型:"+filetype);
//////
string savepath = Server.MapPath("~\\Files\\" + filename);
this.FileUpload1.SaveAs(savepath);
//
Model.FileInfo fi = new Model.FileInfo();
fi.Filepath = "~\\Files\\"+filename;
fi.Filenames = filename;
BLL.FileManager.uploadFile(fi);
Bind();
}

protected void linkbtnDownloda_Command(object sender, CommandEventArgs e)
{
string uri = e.CommandArgument.ToString();
string filename = uri.Substring(uri.LastIndexOf("\\") + 1);
//Response.Write(uri);
FileStream fs = new FileStream(Server.MapPath(uri), FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, (int)fs.Length);
//用完记得关闭字符流操作
fs.Close();
//设置当前字符流在HTTP上输出的格式为stream字符流格式,固定写法
Response.ContentType = "application/octet-stream";
//通知浏览器进行下载操作,并保存当前下载的文件名到本地
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(filename, System.Text.Encoding.UTF8));
//Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);

//将HTTP中的字符流做写入缓冲操作
Response.BinaryWrite(bytes);
//将当前HTTP缓冲中保存的字符流写入到本地
Response.Flush();
//写入完成后结束整个操作
Response.End();

}
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐