using System;
using System.Data;
using System.Configuration;
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)
{
SqlConnection myConn = new SqlConnection("server=192.168.123.63;database=SheduleBooking;Uid=sa;password='hew_tech96168'");
myConn.Open();
string strSql = "SELECT filesid,filename,filetype from Files order by FilesId asc ";
SqlDataAdapter da = new SqlDataAdapter(strSql, myConn);
DataSet ds = new DataSet();
da.Fill(ds, "Files");
GridView1.DataSource = ds;
GridView1.DataBind();
myConn.Close();
myConn.Dispose();
}
protected void Button1_Click(object sender, EventArgs e)
{
bool filesValid = false;
if (this.FileUpload1.HasFile) {
String fileExtension = System.IO.Path.GetExtension(this.FileUpload1.FileName).ToLower();
String[] restrictExtension ={ ".doc", ".jpg", ".rar", ".ppt",".pdf" };
for (int i = 0; i < restrictExtension.Length; i++)
{
if (fileExtension == restrictExtension[i])
{
filesValid = true;
}
}
if (filesValid == true) {
try
{
SqlConnection myConn = new SqlConnection("server=192.168.123.63;database=SheduleBooking;Uid=sa;password='hew_tech96168'");
myConn.Open();
string path = Server.MapPath("upload/");//保存上传文件的文件夹upload虚拟路径对应的实际路径
string filePath = this.FileUpload1.PostedFile.FileName;//客户端文件的完全限定名
string serverPath = "2";// path + filePath.Substring(filePath.LastIndexOf("//") + 1);//上传的文件保存在服务器端的路径
string fileName = filePath.Substring(filePath.LastIndexOf("//") + 1);//文件名
string fileType = this.FileUpload1.PostedFile.ContentType.ToString();//文件类型
System.IO.Stream streamFile = this.FileUpload1.PostedFile.InputStream;//建立数据流对象
int fileLength = this.FileUpload1.PostedFile.ContentLength;//文件长度以字节为单位
byte[] fileData = new Byte[fileLength];//新建一个数组
streamFile.Read(fileData, 0, fileLength);//将这个数据流读取到数组中
//方法1 调用存储过程的方法
//SqlCommand cmd = new SqlCommand("insertFile", myConn);//启用存储过程
//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;
//方法2 使用带参数的sql方法
string strSql = "Insert into Files(fileData,fileName) values(@FImage,'"+fileName+"')";
SqlCommand cmd=new SqlCommand(strSql,myConn);
cmd.Parameters.Add("@FImage",SqlDbType.Image);
cmd.Parameters["@FImage"].Value = fileData;
cmd.ExecuteNonQuery();
Response.Write("上传成功");
myConn.Close();
}
catch (Exception ex){
Response.Write("上传失败!"+ex.Message);
}
}
}
}
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string id = this.GridView1.DataKeys[e.RowIndex]["filesid"].ToString();
Response.Write(id);
Response.Write("开始下载");
SqlConnection myConn = new SqlConnection("server=192.168.123.63;database=SheduleBooking;Uid=sa;password='hew_tech96168'");
myConn.Open();
string sql = "select * from Files where filesid='" + id + "'";
SqlCommand cmd = new SqlCommand(sql, myConn);
SqlDataReader sdr = cmd.ExecuteReader();
sdr.Read();
Response.Buffer = true;
Page.Response.Clear();//清除缓冲区所有内容
Page.Response.ContentType = "application/octet-stream";
// Page.Response.AddHeader("Content-Type",sdr["fileType"].ToString());
Page.Response.AddHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(sdr["fileName"].ToString(), System.Text.Encoding.UTF8));
byte[] file = (Byte[])sdr["fileData"];//读出数据
// int a = file.Length;
Response.BinaryWrite(file);
Response.Flush();
Response.End();
sdr.Close();
myConn.Close();
}
}
//----------------------页面代码-- ---------------
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!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>
<script language="javascript" type="text/javascript">
// <!CDATA[
function Button1_onclick() {
}
// ]]>
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上传" /><br />
<br />
<asp:Label ID="LabFile" runat="server" Text="Label"></asp:Label><br />
<br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="filesid" OnRowDeleting="GridView1_RowDeleting">
<Columns>
<asp:BoundField DataField="filesid" HeaderText="文件ID" />
<asp:BoundField DataField="filename" HeaderText="文件名称" />
<asp:BoundField DataField="filetype" HeaderText="文件类型" />
<asp:CommandField ShowDeleteButton="True" HeaderText="下载" DeleteText="下载"/>
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
//---------------------存储过程-----------------
create procedure insertFile
@fileName varchar(200),
@filePath varchar(300),
@fileType varchar(50),
@fileData image
as
insert into Files(fileName,filePath,fileType,fileData)
values(@fileName,@filePath,@fileType,@fileData)