<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
OnRowCommand="gv_command">
<Columns>
<asp:TemplateField HeaderText="files">
<ItemTemplate>
<asp:LinkButton ID="l1" runat="server" Text='<%#Eval("filenam") %>' CommandArgument='<%#Eval("id") %>' CommandName="link"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="image">
<ItemTemplate>
<asp:ImageButton ID="i1" runat="server" ImageUrl='<%#"Handler.ashx?id=" + Eval("id") %>' CommandName="image" CommandArgument='<%#Eval("id") %>'
Visible='<%#Convert.ToString(Eval("isimage")).Trim()=="yes"?true:false %>' Height="50px" Width="50px" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="Upload" OnClick="b1_click"/><br />
<asp:Image ID="Image1" runat="server" Height="300px" Width="300px"/>
</div>
aspx.cs:
using System.Data.SqlClient;
using System.Data;
using System.IO;
SqlConnection con = new SqlConnection("Data Source=.;database=db;UID=sa;Pwd=sa123");
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) {
GetData();
}
}
private void GetData()
{
da = new SqlDataAdapter("select * from upld order by id", con);
ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
}
protected void gv_command(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "link")
{
string path = "";
byte[] a = getbyte(e.CommandArgument.ToString(), out path);
if (!File.Exists(Server.MapPath(path)))
//File.Delete(Server.MapPath(path));
File.WriteAllBytes(Server.MapPath(path), a);
System.Diagnostics.Process.Start(Server.MapPath(path));
}
else if (e.CommandName == "image")
{
string path = "";
byte[] a = getbyte(e.CommandArgument.ToString(), out path);
string fil = path.Substring(path.LastIndexOf('.') + 1).ToUpper();
string[] files = new string[] { "GIF", "PNG", "JPG", "BMP", "ICO" };
if (files.Contains(fil))
{
MemoryStream ms = new MemoryStream(a);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(ms);
if (!File.Exists(Server.MapPath("d/" + ds.Tables[0].Rows[0][1].ToString())))
//File.Delete(Server.MapPath("d/" + ds.Tables[0].Rows[0][1].ToString()));
bmp.Save(Server.MapPath("d/" + ds.Tables[0].Rows[0][1].ToString()), System.Drawing.Imaging.ImageFormat.Jpeg);
Image1.ImageUrl = "d/" + ds.Tables[0].Rows[0][1].ToString();
}
}
}
byte[] getbyte(string s, out string p)
{
da = new SqlDataAdapter("select top 1 filebin,filenam from upld where id=" + s, con);
ds = new DataSet();
da.Fill(ds);
string fil = ds.Tables[0].Rows[0][1].ToString().Substring(ds.Tables[0].Rows[0][1].ToString().LastIndexOf('.') + 1);
p = "d/" + ds.Tables[0].Rows[0][1].ToString();
return (byte[])ds.Tables[0].Rows[0][0];
}
protected void b1_click(object sender, EventArgs e)
{
FileUpload1.PostedFile.SaveAs(Server.MapPath(FileUpload1.FileName));
string sFileName = Server.MapPath(FileUpload1.FileName);
byte[] fileData = File.ReadAllBytes(Server.MapPath(FileUpload1.FileName));
SqlCommand cmd = new SqlCommand();
cmd.Parameters.Add(new SqlParameter("@filenam", sFileName));
cmd.Parameters.Add(new SqlParameter("@filebin", fileData));
string fil = FileUpload1.PostedFile.ContentType.ToString();
fil = fil.Substring(fil.LastIndexOf('/') + 1).ToUpper();
string[] files = new string[] { "GIF", "PNG", "JPG", "BMP","ICO" };
fil = files.Contains(fil) ? "yes" : "no";
cmd.CommandText = "insert into upld(path,filebin,filenam,isimage) values(@filenam, @filebin,'" + FileUpload1.FileName + "','" + fil + "')";
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
File.Delete(Server.MapPath(FileUpload1.FileName));
GetData();
}
ashx.cs:
using System.Data;
using System.Data.SqlClient;
public void ProcessRequest (HttpContext context)
{
SqlConnection con = new SqlConnection("Data Source=.;database=db;UID=sa;Pwd=sa123");
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da = new SqlDataAdapter("select top 1 filebin from upld where id=" + context.Request.QueryString["ID"].ToString(), con);
ds = new DataSet();
da.Fill(ds);
context.Response.BinaryWrite((byte[])ds.Tables[0].Rows[0][0]);
}
db: with auto increment id
No comments:
Post a Comment