Получить изображение из базы данных SQLSERVER, используя веб-сервис без обработчиков?

1

Я хочу знать, есть ли какой-либо метод для извлечения изображения из SqlServer без использования обработчиков в веб-сервисах [Asp.net]?

Я в настоящее время использую этот код

В моем файле webservice.cs

 public class WebService : System.Web.Services.WebService {

        SqlConnection con = new SqlConnection();
        public WebService () {
            con.ConnectionString = ConfigurationManager.ConnectionStrings["cn"].ConnectionString;
            if (con.State == ConnectionState.Closed)
            {
                con.Open();

            }
            //Uncomment the following line if using designed components 
            //InitializeComponent(); 
        }

        [WebMethod]
        public string HelloWorld() {
            return "Hello World";
        }
        [WebMethod]
        public void Save_Image(Int32 id, Byte[] ar)
        {
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "insert tbimages values(@imageid,@imagename)";
            cmd.Connection = con;
            cmd.Parameters.Add("@imageid", SqlDbType.Int).Value = id;
            cmd.Parameters.Add("@imagename", SqlDbType.Image).Value = ar;
            cmd.ExecuteNonQuery();
            cmd.Dispose();
        }
        [WebMethod]

        public Byte[] Ret_Image(Int32 id)
        {
            SqlCommand cmd =new SqlCommand();
            cmd.CommandText="Select * from tbimages where imageid=@imageid";
            cmd.Connection = con;
            cmd.Parameters.Add("@imageid",SqlDbType.Int).Value = id;
           SqlDataReader dr = cmd.ExecuteReader();
            dr.Read();
            Byte[] ar = (Byte[])(dr[1]);
            dr.Close();
            cmd.Dispose();
            return ar;

           }        
    }

и на моем примере веб-сайта, где я использую/потребляю веб-службы, я использую этот код, то есть в файле default.aspx.cs

public partial class _Default : System.Web.UI.Page
{
    xyz.WebService obj = new xyz.WebService();
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        Int32 In = FileUpload1.PostedFile.ContentLength;
        Byte[] ar = new Byte[In];
        FileStream fs = new FileStream(FileUpload1.PostedFile.FileName, FileMode.Open, FileAccess.ReadWrite);
        fs.Read(ar, 0, In - 1);
        fs.Close();
        obj.Save_Image(Convert.ToInt32(TextBox1.Text), ar);
        TextBox1.Text = string.Empty;
        TextBox1.Focus();


    }
   protected void Button2_Click(object sender, EventArgs e)
    {
        Byte[] ar = obj.Ret_Image(Convert.ToInt32(TextBox3.Text));
        string st = Server.MapPath("ar"); 
        FileStream fs = new FileStream(st, FileMode.Create, FileAccess.Write);
        fs.Write(ar, 0, ar.Length - 1);
        fs.Close();
        Image1.ImageUrl = st;
    }
}

По мне, эта строка [string st = Server.MapPath("ar");] в protected void Button2_Click (отправитель объекта, EventArgs e) должна быть изменена, но я не знаю, какую команду мне нужно использовать


Ниже приведен код файла default.aspx **

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <table>
    <tr>
    <td>Image Id:</td>
    <td><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
    </tr>
    <tr>
    <td>Image Path:</td>
    <td><asp:FileUpload ID="FileUpload1" runat="server" /> </td>
    </tr>
    <tr><td colspan="2" align="center"><asp:Button ID ="Button1" runat="server" 
            Text="Upload" onclick="Button1_Click" /></td></tr>
    </table>
    <table>
    <tr><td> Enter Image ID </td>
    <td><asp:TextBox ID="TextBox3" runat="server"></asp:TextBox></td></tr>
    <tr><td colspan="2" align="center"><asp:Button ID="Button2" runat="server" 
            onclick="Button2_Click" Text="Retrieve Image" /></td></tr>
    </table>
        <br />
        <br />
        <asp:Image ID="Image1" runat="server" />
    </div>
    </form>
</body>
</html>

Имя таблицы базы данных - tbimages

имеющих две колонки

  1. imageid [datatype- Int]

2. imagename [datatype - Image]

Это мой первый пост, поэтому, если у меня есть какие-либо ошибки, просьба также упомянуть об этом.

Теги:
sql-server
web-services
asmx

1 ответ

0

Вы всегда можете сохранить путь/URL-адрес изображения в базе данных и получить его позже, когда вам это нужно. Поместите URL-адрес изображения в тег источника html. См. Пример ниже:

<img src="<% image url %>"></img>

Надеюсь это поможет!

  • 0
    как я получу URL? так как я сохраняю изображение в базе данных, а не в файловой системе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню