protected void btnSearch_Click(object sender, EventArgs e) { // Get search filter. String searchText = HString.SafeTrim(this.txtSearch.Text); BlobFilter filter = new BlobFilter() { IncludeBinaryData = false, Name = searchText }; // Search files by name. List <Blob> files = Blob.LoadCollection(filter); // Rebind results. this.BlobFileList = files; this.gvUploads.DataSource = this.BlobFileList; this.gvUploads.DataBind(); }
public void ProcessRequest(HttpContext context) { Int32?id = HNumeric.GetNullableInteger(context.Request.QueryString["id"]); if (id != null) { BlobFilter filter = new BlobFilter() { ID = id.Value, IncludeBinaryData = true }; Blob file = Blob.Load(filter); if (file != null) { context.Response.Clear(); context.Response.ContentType = file.MimeType; context.Response.AddHeader("content-disposition", "attachment; filename=" + file.Name); context.Response.BinaryWrite(file.BinaryData.ToArray()); } } context.Response.End(); }
/// <summary> /// Load a list of blobs from the database. /// </summary> /// <param name="connectionString">The connection string to the database.</param> /// <param name="filter">The filter used to select blobs.</param> /// <returns></returns> public static List <Blob> LoadCollection(BlobFilter filter) { List <Blob> blobs = new List <Blob>(); SqlCommand cmd = new SqlCommand(); StringBuilder select = new StringBuilder(1000); if (filter.ID > 0) { select.Append("BM.binary_id=@binary_id"); cmd.Parameters.Add(new SqlParameter("@binary_id", SqlDbType.Int) { Value = filter.ID }); } if (!String.IsNullOrEmpty(filter.Name)) { if (select.Length > 0) { select.Append(" AND "); } select.Append("BM.binary_name LIKE '%' + @binary_name + '%'"); cmd.Parameters.Add(new SqlParameter("@binary_name", SqlDbType.NVarChar) { Value = filter.Name }); } if (!String.IsNullOrEmpty(filter.MimeType)) { if (select.Length > 0) { select.Append(" AND "); } select.Append("BM.binary_mime_type LIKE '%' + @binary_mime_type + '%'"); cmd.Parameters.Add(new SqlParameter("@binary_mime_type", SqlDbType.NVarChar) { Value = filter.MimeType }); } if (filter.SizeGreaterThan > 0) { if (select.Length > 0) { select.Append(" AND "); } select.Append("BM.binary_size >= @binary_size"); cmd.Parameters.Add(new SqlParameter("@binary_size", SqlDbType.Int) { Value = filter.SizeGreaterThan }); } if (filter.SizeLessThan > 0) { if (select.Length > 0) { select.Append(" AND "); } select.Append("BM.binary_size <= @binary_size"); cmd.Parameters.Add(new SqlParameter("@binary_size", SqlDbType.Int) { Value = filter.SizeLessThan }); } select.Insert(0, String.Format("SELECT * FROM Binary_Master BM {0} ", cmd.Parameters.Count > 0 ? "WHERE" : String.Empty)); select.Append(" ORDER BY BM.binary_name"); cmd.CommandText = select.ToString(); using (SqlConnection cn = new SqlConnection(HConfig.DBConnectionString)) { using (DataTable dt = HDatabase.FillDataTable(cn, cmd)) { foreach (DataRow dr in dt.Rows) { blobs.Add(new Blob(dr, filter.IncludeBinaryData)); } } } return(blobs); }
/// <summary> /// Load a single blob. /// </summary> /// <param name="connectionString">The connection string to the database.</param> /// <param name="filter">The filter used to select blobs.</param> /// <returns></returns> public static Blob Load(BlobFilter filter) { List <Blob> blobs = Blob.LoadCollection(filter); return(blobs.Count > 0 ? blobs[0] : null); }