用asp.net实现将上传的图片变小存入数据库

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 Sub Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
Form Designer
InitializeComponent()
End Sub #End Region Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub Private 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 Class dbo.image存储过程如下:
create proc dbo.image
@pic image,
@picsmall image
as
insert into table(pic,picsmall) values (@pic,@picsmall)

时间: 2024-11-17 10:45:14

用asp.net实现将上传的图片变小存入数据库的相关文章

网站上传的图片是怎么在数据库中存储的

问题描述 网站上传的图片是怎么在数据库中存储的,要是存在数据库中是不是增加数据库的负担,读写效率方面也不高?要是数据库只存放路径,图片存在web服务器文件夹里安全吗?QQ空间照片是怎么存储的?像百度文库doc.txt.pdf文件又是怎么存储的呢 解决方案 1.存到数据库里面,就是对图片数据进行序列化,可以保存到数据库里面2.存库和存硬盘的效率应该是差不多的,如果图片不多,存在库里面和存在硬盘上都一样,如果内容多了存在数据库里面会不方便,对于备份.恢复等操作不太方便3.图片存在web文件夹里面安全

如何让ckeditor上传的图片保留原来的相机属性

问题描述 如图所示,第一张是原图的属性,第二张是用ckeditor上传后的相机属性,结果上传后图片变小了,而且相机属性也没有了,怎么样才能使ckeditor直接上传原图,或者使上传的图片保留相机属性呢?求解 解决方案 解决方案二:请问有人回答吗,我还可以增加点数的解决方案三:你这图片被处理过了,要不你用js版的,然后上传功能自己做,不做任何特殊处理试试看解决方案四:引用2楼starfd的回复: 你这图片被处理过了,要不你用js版的,然后上传功能自己做,不做任何特殊处理试试看 那用ckeditor

Asp无组件文件上传的实例

上传|无组件 1.库文件(upload.inc.asp)<%Dim oUpFileStream Class UpFile_Class Dim Form,File,Version,Err Private Sub Class_InitializeVersion = "无组件上传类 Version V1.0"Err = -1End Sub Private Sub Class_Terminate '清除变量及对像If Err < 0 ThenForm.RemoveAllSet Fo

asp.net 2.0 上传控件的使用

asp.net|控件|上传|上传控件 试用了一下asp.net 2.0的上传控件,还是挺方便的. 分享代码如下:     protected void Button1_Click(object sender, EventArgs e)    {        try        {            判断文件大小#region 判断文件大小            int intFileLength = this.FileUpload1.PostedFile.ContentLength;  

技巧应用:ASP.NET中文件上传下载方法集合

asp.net|集合|技巧|上传|下载|中文 文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法,本文主要内容包括: 1.如何解决文件上传大小的限制 2.以文件形式保存到服务器 3.转换成二进制字节流保存到数据库以及下载方法 4.上传Internet上的资源 第一部分: 首先我们来说一下如何解决ASP.net中的文件上传大小限制的问题,我们知道在默认情况下ASP.NET的文件上传大小限制为2M,一般情况下,我们可以采用更改Web.Config文件来自定义最大文件大

ASP.NET中文件上传下载方法集合

asp.net|集合|上传|下载|中文 文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法文件的上传下载是我们在实际项目开发过程中经常需要用到的技术,这里给出几种常见的方法,本文主要内容包括: 1.如何解决文件上传大小的限制 2.以文件形式保存到服务器 3.转换成二进制字节流保存到数据库以及下载方法 4.上传Internet上的资源 第一部分: 首先我们来说一下如何解决ASP.NET中的文件上传大小限制的问题,我们知道在默认情况下ASP.NET的文件上传大小限制为

ASP.NET c# 文件上传

asp.net|上传 异常详细信息: System.UnauthorizedAccessException: 对路径"C:\Inetpub\spatial\csk\Communities\Common\Images\HtmlTextBoxUserImages\logo.gif"的访问被拒绝. ASP.NET 未被授权访问所请求的资源.请考虑授予 ASP.NET 请求标识访问此资源的权限.ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHI

ASP在上传的图片上打自己的文字水印

很多时候需要在用户上传的图片上加上版权或者一些其他的附加文字信息,如何实现这样的功能,下面帖个简单实现的例子,起到抛砖引玉的作用. <%@PageLanguage="c#"Debug="true"Trace="true"%> <%@ImportNamespace="System.IO"%> <%@ImportNamespace="System.Drawing"%> <

在asp.net中如何上传大文件

在asp.net中如何上传大文件呢?我们需要配置Web.config文件.具体如下: 在web.config中的<system.web></system.web>内加入如下代码: <httpRuntime executi maxRequestLength="951200" useFullyQualifiedRedirectUrl="true" minFreeThreads="8" minLocalRequestFre