Я видел некоторые другие вопросы, похожие на мои, но я не совсем понял, как использовать это, чтобы исправить свой код. У меня есть веб-форма с выпадающим списком, который используется для выбора нужного изображения. Моя проблема в том, что сейчас я использую несколько обработчиков изображений для каждого изображения. вот примеры кода:Как получить несколько изображений из одного обработчика изображений?
веб-форму:
namespace MultiCameraPage
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void SelBut_Click(object sender, EventArgs e)
{
int num = DropDownList1.SelectedIndex;
switch (num)
{
case 0:
Response.Redirect("Page1.htm");
break;
case 1:
Response.Redirect("Page2.htm");
break;
case 2:
Response.Redirect("Page3.htm");
break;
case 3:
Response.Redirect("Page4.htm");
break;
}
}
}
}
он просто перенаправляет на веб-страницу, которая имеет изображение, которое вы хотите. Я покажу «page1» и «page2», а остальное - просто слово с измененными именами.
стр.1 HTML:
<head>
<title></title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript" language="JavaScript">
function refreshIt() {
if (!document.images) return;
document.getElementById("imgcontainer1").src = "/Page1Handler.ashx?" + Math.random();
setTimeout('refreshIt()', 700);
}
</script>
</head>
<body onload=" setTimeout('refreshIt()',700)">
<img id="imgcontainer1" src="/Page1Handler.ashx" alt="cam image1"/>
</body>
</html>
Page1Handler:
Этот обработчик должен сохранить изображение из FileStream
namespace MultiCameraPage
{
public class Page1Handler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string saveTo = @"C:pathtoImage\images\XIG.jpg";
FileStream writeStream1 = new FileStream(saveTo, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using (FileStream fs1 = File.Open(@"C:\Path to filestream", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
ReadWriteStream1(fs1, writeStream1);
}
byte[] tt = File.ReadAllBytes(context.Server.MapPath("~/images/XIG.jpg"));
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(tt);
}
public bool IsReusable
{
get
{
return false;
}
}
// readStream is the stream you need to read
// writeStream is the stream you want to write to
private void ReadWriteStream1(Stream readStream, Stream writeStream)
{
int Length = 256;
Byte[] buffer = new Byte[Length];
int bytesRead = readStream.Read(buffer, 0, Length);
// write the required bytes
while (bytesRead > 0)
{
writeStream.Write(buffer, 0, bytesRead);
bytesRead = readStream.Read(buffer, 0, Length);
}
readStream.Close();
writeStream.Close();
}
}
}
PAGE2 HTML:
это то же самое, как page1 просто с измененными именами
<head>
<title></title>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript" language="JavaScript">
function refreshIt() {
if (!document.images) return;
document.getElementById("imgcontainer2").src = "/Page2.ashx?" + Math.random();
setTimeout('refreshIt()', 700);
}
</script>
</head>
<body onload=" setTimeout('refreshIt()',700)">
<img id="imgcontainer2" src="/Page2.ashx" alt="cam image2"/>
</body>
Page2.ashx:
же, как page1Handler.ashx
namespace MultiCameraPage
{
public class Page2 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string saveTo = @"C:\PathToImage\images\GateV.jpg";
FileStream writeStream3 = new FileStream(saveTo, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
using (FileStream fs3 = File.Open(@"C:\path to filestream", FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{
ReadWriteStream3(fs3, writeStream3);
}
byte[] tt = File.ReadAllBytes(context.Server.MapPath("~/images/GateV.jpg"));
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(tt);
}
public bool IsReusable
{
get
{
return false;
}
}
// readStream is the stream you need to read
// writeStream is the stream you want to write to
private void ReadWriteStream3(Stream readStream, Stream writeStream)
{
int Length = 256;
Byte[] buffer = new Byte[Length];
int bytesRead = readStream.Read(buffer, 0, Length);
// write the required bytes
while (bytesRead > 0)
{
writeStream.Write(buffer, 0, bytesRead);
bytesRead = readStream.Read(buffer, 0, Length);
}
readStream.Close();
writeStream.Close();
}
}
}
Остальное повторяется только эти файлы. Я чувствую, что это самый худший способ сделать это, и именно поэтому я прошу о помощи. Выпадающее меню прикрепляется к файлу данных, который имеет только имя изображения и ничего больше. Должен ли я добавить что-то еще в datatable?
какую библиотеку я включить использовать «запрос»? Я не могу найти, какой из них. – user3634308
@ user3634308, извинения, это свойство HttpContext. Сообщение обновлено – Andrei