• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

как получить Id файла, который только загрузили в базу Sql

  • Автор темы Kreol
  • Дата начала
K

Kreol

нет все же я больше хочу вот так, но не знаю где мне правильно прописать УРЛ для картинки, это раз и
Код:
Bitmap bitmap = new Bitmap(stream);
выводит ошибку
Код:
Parameter is not valid.

Код:
 protected void cmdView_Click1(object sender, EventArgs e)
{
MemoryStream stream = new MemoryStream();
SqlConnection connection = new
SqlConnection(@"Data Source=localhost;Initial Catalog=MayBase;Integrated Security=True");
try
{
connection.Open();
SqlCommand command = new
SqlCommand("SELECT Picture from im where id = 10", connection);
byte[] image = (byte[])command.ExecuteScalar();
stream.Write(image, 0, image.Length);
Bitmap bitmap = new Bitmap(stream);
Response.ContentType = "image/gif";
bitmap.Save(Response.OutputStream, ImageFormat.Gif);
//imgDB.ImageUrl = stream.Write(image, 0, image.Length);
}
finally
{
connection.Close();
stream.Close();


}
}
 
K

Kreol

Попытался разобратся с простым примером HttpHandler
выкидывает ошибку в web.cfg, что не найден путь к файлу.

Пример с MSDN:

Код:
namespace Project1.Images
{

using System.Web;

public class GetPhoto : IHttpHandler 
{
public void ProcessRequest(HttpContext context) 
{
HttpRequest Request = context.Request;
HttpResponse Response = context.Response;
}



public bool IsReusable 
{
// To enable pooling, return true here.
// This keeps the handler in memory.
get { return false; } 
}
}
}

помогите разобраться
 

Вложения

  • Project1.rar
    1,6 КБ · Просмотры: 251
K

Kreol

1. а в чом разница между * и GET
2. почему именно такой синтаксис прописи пути,

Код:
<httpHandlers>
<add verb="GET" path="Photo.aspx" type="Images.GetPhoto1" />
</httpHandlers>
Код:
 <httpHandlers>
<add verb="*" path="Photo.aspx" type="Project1.Images.GetPhoto,Project1" />
</httpHandlers>

или это разница между версиями студии 2003 и 5

кстати а у вас MSN нету?

а если не указівать
Код:
<asp:Image ID="Image1" runat="server" ImageUrl="~/Photo.aspx?id=1" />
оно отображаться не будет так

и кстати
Error 1 File '~/Photo.aspx?id=1' was not found.
для чего id=1???

при запуске
он дает ошибку
Код:
Configuration Error 
Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. 

Parser Error Message: Could not load type 'Images.GetPhoto1'.

Source Error: 


Line 14:	  <httpHandlers>
Line 15:		 <add verb="GET" path="Photo.aspx" 
Line 16:			 type="Images.GetPhoto1" />
Line 17:	  </httpHandlers>
Line 18: 


Source File: C:\WEBB\Project1\images\web.config	Line: 16

я просто текст не могу вывести на страничку

Код:
public void ProcessRequest(HttpContext context)
{
HttpRequest Request = context.Request;
HttpResponse Response = context.Response;
Response.Write("Hello ");
}
 
K

Kreol

ну может кто-то рабочим проет сделать????????
 
K

Kreol

Код рабочего Handlera, но почему-то отображает только рамку картинки, саму картинку не хочет вытаскивать. Возможно нужно дать права доступа на считывание, запись, подскажи.
Или в коде где-то глюк?

Код:
Структура базы im
table - Images
id		int		  not null
Picture  image		 not null
Comment  nvarchar(50)

Код:
<%@ WebHandler Language="C#" Class="Handler" %>

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data;
using System.Data.OleDb;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Drawing;
using System.Drawing.Imaging;

public class Handler : IHttpHandler {

public void ProcessRequest(HttpContext context)
{
HttpRequest Request = context.Request;
HttpResponse Response = context.Response;

int empID = 1;
SqlConnection connection = new SqlConnection(GetConnectionString());
SqlCommand myCmd = new SqlCommand("SELECT Picture from Images where id = @id", connection);

myCmd.Parameters.Add("@id", empID);
connection.Open();
SqlDataReader rdr = myCmd.ExecuteReader();
rdr.Read();
Response.ContentType = "image/jpeg";
Response.OutputStream.Write(rdr.GetSqlBinary(0).Value, 0, rdr.GetSqlBinary(0).Length);
Response.End();
rdr.Close();
connection.Close();
//<img src="photo.aspx?id=10">

}
private string GetConnectionString()
{
return "Data Source=localhost;Initial Catalog=im;Integrated Security=True";
}

public bool IsReusable {
get 
{
return true;
}
}

}
 
K

Kreol

Там где закоментировано работает, простой вывод картинки с диска, а вот из базы до
Код:
Bitmap bitmap = new Bitmap(stream);
и пишет неверный параметр. А в stream картинка есть только чего-то я не могу понять как ее выташить
Код:
<%@ WebHandler Language="C#" Class="Handler" %>

using System;

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Data;
using System.Data.OleDb;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Drawing;
using System.Drawing.Imaging;


public class Handler : IHttpHandler
{
//================================================================
public void ProcessRequest(HttpContext context)
{
SqlConnection connection = new SqlConnection("Data Source=localhost;Initial Catalog=im;Integrated Security=True");
MemoryStream stream = new MemoryStream();
try
{

HttpRequest Request = context.Request;
int id = 5;
HttpResponse Response = context.Response;

SqlCommand command = connection.CreateCommand();
command.CommandText = "SELECT Picture FROM Images WHERE id = @id";
command.Parameters.AddWithValue("@id", id);
connection.Open();
byte[] image = (byte[])command.ExecuteScalar();

stream.Write(image, 0, image.Length);

Bitmap bitmap = new Bitmap(stream);


Response.ContentType = "image/gif";

bitmap.Save(Response.OutputStream, ImageFormat.Gif);
}


finally

{
connection.Close ();
stream.Close ();
}
}



//================================================================
/*
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "image/jpeg";
//context.Response.Write("Hello World");
//string FileName = "C:\ WEB\HTTP\23.jpeg";
string fileName = context.Request.Params["FileName"];
fileName = "G:\ \Foto\\Топ Модели\\asian061.jpg";
Bitmap bmp = new Bitmap(fileName);
bmp.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
}*/
//================================================================
public bool IsReusable
{
get
{
return true;
}
}
}
 
K

Kreol

он просит пропичывать так, и выдает ошибку Parameter is not valid. на 1 строчку
Код:
System.Drawing.Image img = System.Drawing.Image.FromStream(new MemoryStream(/*byte[]*/ image ));
Response.ContentType = "image/gif";
img.Save(Response.OutputStream, ImageFormat.Gif);

Кстати а для чего создавать новый поток? Ведь он уже сушествует
 
K

Kreol

да насчет потока это я завтыкал
а код гнет матюк и все

Код:
Server Error in '/HTTP' Application.
--------------------------------------------------------------------------------

Parameter is not valid. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.ArgumentException: Parameter is not valid.

Source Error: 


Line 39:					stream.Write(image, 0, image.Length);
Line 40:					
Line 41:					System.Drawing.Image img = System.Drawing.Image.FromStream(new MemoryStream(image));
Line 42:					Response.ContentType = "image/gif";
Line 43:					img.Save(Response.OutputStream, ImageFormat.Gif);


Source File: c:\WEB\HTTP\Handler.ashx	Line: 41 

Stack Trace: 


[ArgumentException: Parameter is not valid.]
System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData) +337
System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement) +33
System.Drawing.Image.FromStream(Stream stream) +27
Handler.ProcessRequest(HttpContext context) in c:\WEB\HTTP\Handler.ashx:41
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Ex
ecute() +401
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +117




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.42
 
K

Kreol

залил jpeg
все равно то же самое
Код:
	 SqlConnection connection = new SqlConnection("Data Source=localhost;Initial Catalog=im;Integrated Security=True");
//MemoryStream stream = new MemoryStream();
try
{

HttpRequest Request = context.Request;
int id = 15;
HttpResponse Response = context.Response;

SqlCommand command = connection.CreateCommand();
command.CommandText = "SELECT Picture FROM Images WHERE id = @id";
command.Parameters.AddWithValue("@id", id);
connection.Open();
byte[] image = (byte[])command.ExecuteScalar();

//stream.Write(image, 0, image.Length);

System.Drawing.Image img = System.Drawing.Image.FromStream(new MemoryStream(image));
Response.ContentType = "image/jpeg";
img.Save(Response.OutputStream, ImageFormat.Jpeg);
 
K

Kreol

БАЗА im

та первые 10 гифы идут

+ вот сам проект

вроде база нормально сохранилась
 

Вложения

  • BakDB.rar
    206,3 КБ · Просмотры: 199
  • HTTP.rar
    2,2 КБ · Просмотры: 169
K

Kreol

сейчас сделаю новый бекап

вроде нормально сделалась
 

Вложения

  • im_backup.rar
    70,7 КБ · Просмотры: 185
K

Kreol

можешь скинуть правильную? или раскажи в чом проблема если знаешь?
 
K

Kreol

что означает правильно записать?
записываю через FU в эту же таблицу
через Дефаулт, можешь сам попробовать!
 

Вложения

  • FU.rar
    114,5 КБ · Просмотры: 205
K

Kreol

можешь помочь? разобраться как правильно тогда записать?
 
K

Kreol

используется 2000 сервер, ты через него проверял?
 
K

Kreol

сейчас попробую, УРАААААААААА
ЗАРАБОТАЛО...
СПАСИБО БОЛЬШОЕ.

А в чом же тогда глюк???
Что дает позишен?

о кстати а с гифами как сделать чтоб это аниме было? потому что просто вывод дает только картинку недвижущююся

и еще возможно ли прописать сразу несколько форматов????

типа
Код:
Response.ContentType = "image/jpeg";
img.Save(Response.OutputStream, ImageFormat.Jpeg);
Код:
Response.ContentType = "image/gif";
img.Save(Response.OutputStream, ImageFormat.gif);
Код:
Response.ContentType = "image/png";
img.Save(Response.OutputStream, ImageFormat.png);

ЗЫ кстати а как теперь на основной страничке при выводе из базы не только имейджа но и другого текста прописать картинку ту что в базе в какой-то имейдж или еще что-нить, потому что получается что картинка у нас сейчас выводиться на отдельной страничке
 
K

Kreol

:) все таки рад что вы меня наставляете, а не всегда объясняете :D
почему переделываю, потому что еще маленький. А то б точно не сидел 2 недели из-за того что невалидные данные записывались. Мда ну быват конечно
 
K

Kreol

Как передать параметр id из странички в хендлер?
И можно как-то получить УРЛ картинки из хендлера и передать его в страничку?
Или как отобразить на страничке с данными рисунок из хендлера?

попробовал через
Код:
Server.Transfer
не хочет, передает только на *.aspx а в *.ashx не хочет
 
K

Kreol

:) мда веселые вопросы - ответы еще лучше.
не просто получается что хендлер выполняется отдельно и выводит картинку в отдельную страничку, а мне нана чтоб он ее выводил на страничке FU -> Default.aspx рядом с картинкой которая отображается там при загрузке из FileUpload
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!