<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      用asp.net完成將上傳的圖片變小存入數據庫

      [摘要]我校的學生網:www.ehang.com.cn中有校友錄和圖庫等的項目有上傳圖片的功能,我將圖片數據存入數據庫中,需要將圖片變小后和原圖片一塊存入數據庫中,這樣先可顯示很多小圖,點擊后再顯示大圖!在asp.net中是這么做的:changimage.aspx中代碼:<%@ Page Langu...

      我校的學生網:www.ehang.com.cn中有校友錄和圖庫等的項目有上傳圖片的功能,我將圖片數據存入數據庫中,需要將圖片變小后和原圖片一塊存入數據庫中,這樣先可顯示很多小圖,點擊后再顯示大圖!在asp.net中是這么做的:
      changimage.aspx中代碼:
      <%@ Page Language="vb" AutoEventWireup="false" Codebehind="changimage.aspx.vb" Inherits="uploadimage.changimage"%>
      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      <HTML>
      <HEAD>
      <title></title>
      <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
      <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
      <meta name="vs_defaultClientScript" content="JavaScript">
      <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
      </HEAD>
      <body MS_POSITIONING="GridLayout">
      <form id="Form1" method="post" enctype="multipart/form-data" runat="server">
      <FONT face="宋體"><INPUT id="File1" style="Z-INDEX: 101; LEFT: 291px; WIDTH: 180px; POSITION: absolute; TOP: 119px; HEIGHT: 45px" type="file" size="10" name="File1" runat="server"> <asp:Button id="cmdupload" style="Z-INDEX: 103; LEFT: 402px; POSITION: absolute; TOP: 194px" runat="server" Text="上傳圖片" Width="81px" Height="42px"></asp:Button>
      </FONT>
      </form>
      </body>
      </HTML>
      changimage.aspx.vb中代碼如下:
      Public Class changimage
      Inherits System.Web.UI.Page
      Protected WithEvents cmddemo As System.Web.UI.WebControls.Button
      Protected WithEvents cmdupload As System.Web.UI.WebControls.Button
      Protected WithEvents SqlConn As System.Data.SqlClient.SqlConnection
      Protected WithEvents SqlComm As System.Data.SqlClient.SqlCommand
      Protected WithEvents File1 As System.Web.UI.HtmlControls.HtmlInputFile #Region " Web Form Designer Generated Code "'This call is required by the Web Form Designer.
      <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
      Me.SqlConn = New System.Data.SqlClient.SqlConnection()
      Me.SqlComm = New System.Data.SqlClient.SqlCommand()End SubPrivate Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
      Form Designer
      InitializeComponent()
      End Sub#End RegionPrivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      End SubPrivate Sub cmdupload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdupload.Click
      Dim image As System.Drawing.Image, newimage As System.Drawing.Image
      Dim callb As System.Drawing.Image.GetThumbnailImageAbort
      Dim f As System.IO.File, fs As System.IO.FileStream
      Dim temppath As String
      Dim bigdata As Byte(), smalldata As Byte() '大圖片數據、小圖片數據
      Dim pic As System.Data.SqlClient.SqlParameter, picsmall As System.Data.SqlClient.SqlParameter
      '檢察上傳文件是否合標準,check函數是我根據網站需要寫的了
      If check(File1.PostedFile.FileName) <> "ok" Then
      Response.Write(check(File1.PostedFile.FileName))
      Exit Sub
      End If
      '設置臨時路徑,為了防止多用戶訪問時的沖突,設了一個application對象
      If Application("image") = "" Then
      Application("image") = 0
      End If
      Application.Lock()
      temppath = Server.MapPath(CStr(Application("image"))) '臨時路徑
      Application("image") = Application("image") + 1
      Application.UnLock()
      '讀取圖片的數據
      ReDim bigdata((Me.File1.PostedFile.InputStream.Length)
      Me.File1.PostedFile.InputStream.Read(bigdata, 0, UBound(bigdata)) '將原圖片數據讀到bigdata中
      '改變圖片的大小
      image = System.Drawing.Image.FromStream(Me.File1.PostedFile.InputStream)
      'newimage里面的size也可另外設置,我只用了80*60和60*80兩種
      If image.Width > image.Height Then
      newimage = image.GetThumbnailImage(80, 60, callb, New System.IntPtr(0))
      Else
      newimage = image.GetThumbnailImage(60, 80, callb, New System.IntPtr(0))
      End If
      image.Dispose()
      '將新圖片及圖片變小后存到臨時路徑中
      newimage.Save(temppath, System.Drawing.Imaging.ImageFormat.Jpeg)
      newimage.Dispose()
      '讀取臨時文件數據到smalldata中
      fs = New System.IO.FileStream(temppath, IO.FileMode.Open, IO.FileAccess.Read)
      ReDim smalldata(fs.Length)
      fs.Read(smalldata, 0, UBound(smalldata))
      fs.Close()
      '上述獲得小圖片的方法我原本想用system.io.memorystream的,可是行不通:代碼如下:
      'dim m as system.io.memorystream
      'm=new system.io.memorystream()
      'newimage.save(m,System.Drawing.Imaging.ImageFormat.Jpeg)
      'redim smalldata(m.length)
      'm.read(smalldata,0,m.length)
      '可是上述方法讀出來的smalldata全是空的,不知道原因,請指教
      '刪除臨時文件
      If f.Exists(temppath) Then
      f.Delete(temppath)
      End If
      '將數據加入數據庫中
      '由于數據庫中有image字段,我用sql插不進去,就用一個存儲過程
      '請教各位大蝦用sql語句插入有image字段的表該怎么寫
      '用insert into talbe(pic,picsmall) values("&bigdata&","&smalldata&")這樣不行,用'"&bigdata&"'也不行呀!
      SqlConn = New System.Data.SqlClient.SqlConnection(connstr) '可自己設置connstr連接數據庫服務器
      SqlComm = New System.Data.SqlClient.SqlCommand()
      SqlComm.CommandType = CommandType.StoredProcedure
      SqlComm.CommandText = "dbo.image"
      pic = New System.Data.SqlClient.SqlParameter("@pic", SqlDbType.Image)
      pic.Value = bigdata
      picsmall = New System.Data.SqlClient.SqlParameter("@picsmall", SqlDbType.Image)
      picsmall.Value = smalldata
      SqlComm.Parameters.Add(pic)
      SqlComm.Parameters.Add(picsmall)
      SqlComm.Connection = SqlConn
      SqlComm.Connection.Open()
      SqlComm.ExecuteNonQuery()
      SqlComm.Connection.Close()
      SqlComm.Dispose()
      SqlConn.Dispose()
      End Sub
      End Classdbo.image存儲過程如下:
      create proc dbo.image
      @pic image,
      @picsmall image
      as
      insert into table(pic,picsmall) values (@pic,@picsmall)


      日韩精品一区二区三区高清