Как преобразовать 0x53797374656d2e427974655b5d в формат изображения и отобразить tnem с помощью обработчика asp

#c# #sql-server

#c# #sql-сервер

Вопрос:

Я сохранил изображения в своей таблице sql, но когда я отображаю их с помощью asp.net Обработчик изображений некоторые изображения повреждены, они сохраняются в этом формате 0x53797374656d2e427974655b5d . Я хочу знать, могу ли я преобразовать их в изображение, чтобы я мог их отображать.

Код обработчика:

   public class ImageHandler : IHttpHandler {

public void ProcessRequest (HttpContext context) {
    string id = context.Request.QueryString["id"].ToString();
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["constr"].ToString());
    con.Open(); 
    SqlCommand objCmd = new SqlCommand("select Image from table where xyz=@xyz", con);
    objCmd.CommandType = System.Data.CommandType.Text;
    objCmd.Parameters.AddWithValue("@xyz", id.ToString());
    object data = objCmd.ExecuteScalar();
    con.Close();
    objCmd.Dispose();
    if(data == null)
    {
            
    }
    context.Response.BinaryWrite((byte[])data);
}

public bool IsReusable {
    get {
        return false;
    }
}
}
 

На странице aspx:

   <asp:Image ID="img" runat="server" ImageUrl='<%# "ImageHandler.ashx?ID="   Eval("xyz")%>' 
 alt="Image broken"/> 
 

Пожалуйста, дайте мне знать, есть ли какой-либо способ преобразовать эти изображения в их исходный формат.

Комментарии:

1.Можем ли мы уже прекратить использовать AddWithValue() ? Это зло.

2. В каком смысле сломан? Что происходит на самом деле? Кроме того, вы, похоже, не устанавливаете тип содержимого в ответе.

3. Если вы обратитесь к таблице ASCII с шестнадцатеричным столбцом, вы увидите, что ваши «байты изображения», 0x53797374656d2e427974655b5d , преобразуются в System.Byte[] . Похоже, вы потеряли исходные данные изображения при попытке сохранить их в базе данных.

4. Это означает, что он не может быть преобразован в исходное изображение…