priya231 Ответов: 1

Как отобразить изображение в imagebox из столбца varbinary без использования обработчика genric в веб-приложении C#


Это мой HTML-код на стороне

<img id="imgAddressProof" runat="server" src=""/>



Код за кодом

DataTable dt= fetchEmpMst ('Em0001');
Byte[] данные = конвертировать.FromBase64String(ДТ.Строки[0]["ADDRESS_PROOF_IMG"].Метод toString());
imgAddressProof.Src = "data:image;base64", + Convert.ToBase64String(dt. Rows[0] ["ADDRESS_PROOF_IMG"]);


Метод

public static DataTable fetchEmpMst(string searchTerm)
{
DataTable dt = новый DataTable();
пробовать
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings ["constr"].Параметр connectionString);
строка запроса = "выбрать ADDRESS_PROOF_IMG от dbo.EMPLOYEE_MASTER где EMPLOYEE_CODE='" + searchTerm + "'";
SqlCommand cmd = new SqlCommand(запрос);
УМК.Параметры.AddWithValue ("@SearchTerm", searchTerm);
УМК.Подключение = кон;
SqlDataAdapter da = новый SqlDataAdapter(cmd);
да.Заполнить(ДТ);

}
catch (исключение)
{
}
возврат dt;
}

Мое значение столбца sql server равно 0x55706C6F61642F6164642D6D6F72652e6a7067.

Я получаю system. byte во время отладки внутри метода .Не удалось преобразовать в байтовый массив.

Что я уже пробовал:

Я попытался неявно скрыть значение datatable в массиве байтов.

[] данные =байт[](байт ДТ.Строки[0]["ADDRESS_PROOF_IMG"].Метод toString());

Много гуглил, но не получал подходящего ответа.

Пожалуйста, веди меня.
Заранее спасибо....

1 Ответов

Рейтинг:
0

Dave Kreskowiak

Во-первых, ваш SQL испорчен. У вас есть передаваемый параметр, но в SQL нет ничего, что принимало бы этот параметр. То, что вы сделали, - это передали параметр напрямую, через конкатенацию строк. Это плохая техника. Запрос должен быть:

string query = "SELECT Address_Proof_Img FROM dbo.Employee_Master WHERE Employee_Code=@searchTerm";

И ваш параметр должен соответствовать ему:
cmd.Parameters.AddWithValue("@searchTerm", searchTerm);


Теперь, когда у вас есть байтовый массив обратно, вы должны обернуть его в объект MemoryStream, чтобы получить поток, который будет принимать растровый конструктор:
Bitmap image;
using (var ms = new MemoryStream(data))
{
    image = new Bitmap(ms);
}


priya231

Сэр, пожалуйста, скажите мне, как я буду преобразовывать DataTable значение в байтовый массив.

Byte[] данные = конвертировать.FromBase64String(ДТ.Строки[0]["ADDRESS_PROOF_IMG"].Метод toString());

Я использовал эту строку, но не смог преобразовать ее в байтовый массив.