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();
        }
Beispiel #2
0
        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();
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
        /// <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);
        }