2015-09-22 1 views

ответ

0

Введенные изображения будут отображаться в элементе управления GridView.

В GridView назначается обработчик событий OnRowDataBound, который будет использоваться для отображения изображения, вставленного в базу данных MySql.

HTML

<asp:FileUpload ID="FileUpload1" 
       runat="server" /> 
<asp:Button Text="Upload" 
      runat="server" 
      OnClick="UploadFile" /> 
<asp:GridView ID="gvImages" 
       runat="server" 
       AutoGenerateColumns="false" 
       OnRowDataBound="OnRowDataBound"> 
    <Columns> 
     <asp:BoundField HeaderText="File Id" 
         DataField="FileId" /> 
     <asp:BoundField HeaderText="File Name" 
         DataField="FileName" /> 
     <asp:TemplateField HeaderText="Image"> 
      <ItemTemplate> 
       <asp:Image ID="Image1" 
          runat="server" 
          Height="80" 
          Width="80" /> 
      </ItemTemplate> 
     </asp:TemplateField> 
    </Columns> 
</asp:GridView> 

C#

protected void UploadFile(object sender, EventArgs e) 
{ 
    string filename = Path.GetFileName(FileUpload1.PostedFile.FileName); 
    string contentType = FileUpload1.PostedFile.ContentType; 
    using (Stream fs = FileUpload1.PostedFile.InputStream) 
    { 
     using (BinaryReader br = new BinaryReader(fs)) 
     { 
      byte[] bytes = br.ReadBytes((Int32)fs.Length); 
      string constr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; 
      using (MySqlConnection con = new MySqlConnection(constr)) 
      { 
       string query = "INSERT INTO Files(FileName, ContentType, Content) VALUES (@FileName, @ContentType, @Content)"; 
       using (MySqlCommand cmd = new MySqlCommand(query)) 
       { 
        cmd.Connection = con; 
        cmd.Parameters.AddWithValue("@FileName", filename); 
        cmd.Parameters.AddWithValue("@ContentType", contentType); 
        cmd.Parameters.AddWithValue("@Content", bytes); 
        con.Open(); 
        cmd.ExecuteNonQuery(); 
        con.Close(); 
       } 
      } 
     } 
    } 
    Response.Redirect(Request.Url.AbsoluteUri); 
} 

Вышеуказанное обработчик событий запускается на выполнение при загрузке будет нажата кнопка, он сначала преобразует файл загруженного изображения в массив BYTE, используя класс BinaryReader, а затем сохраняет Файл изображения как двоичные данные (BLOB) в базе данных MySql.

Имя файла, тип содержимого (тип MIME) и фактический файл в виде массива байтов вставляются в таблицу базы данных MySql.

Примечание: Тип содержимого (тип MIME) очень важен при загрузке файлов, поскольку он уведомляет обозреватель о типе файла.

+0

Уже есть сетка с изображениями. Моя цель - я хочу вставить изображение, которое выбрано из моего gridview. Сначала я извлекаю, затем снова вставляю это изображение. –

+0

Любой пример кода будет оценен по достоинству. –

+0

@AbdujalilChuliev: Я думаю, вы можете взглянуть на [Сохранить и получить изображения BLOB из базы данных MySql в ASP.Net, C#] (http://www.aspsnippets.com/Articles/Save-and-Retrieve-BLOB-Images -из-MySql-БД-в-ASPnet-C-и-VBNet.aspx) –