• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь

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

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

Kreol

#21
нет все же я больше хочу вот так, но не знаю где мне правильно прописать УРЛ для картинки, это раз и
Код:
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

#22
Попытался разобратся с простым примером 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; } 
}
}
}
помогите разобраться
 

Вложения

K

Kreol

#23
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

#25
Код рабочего 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

#26
Там где закоментировано работает, простой вывод картинки с диска, а вот из базы до
Код:
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

#27
он просит пропичывать так, и выдает ошибку 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

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

Код:
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

#29
залил 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

#30
БАЗА im

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

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

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

Вложения

  • 206.3 КБ Просмотры: 49
  • 2.2 КБ Просмотры: 39
K

Kreol

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

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

Вложения

K

Kreol

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

Kreol

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

Вложения

  • 114.5 КБ Просмотры: 66
K

Kreol

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

Kreol

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

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

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

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

типа
Код:
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

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

Kreol

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

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

Kreol

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