/ Published in: ASP
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
<%@ Page Trace="False" Language="vb" aspcompat="false" debug="true" validateRequest="false"%> <%@ Import Namespace=System.Drawing %> <%@ Import Namespace=System.Drawing.Imaging %> <%@ Import Namespace=System %> <%@ Import Namespace=System.Collections %> <%@ Import Namespace=System.Web %> <%@ Import Namespace=System.Web.UI %> <%@ Import Namespace=System.Web.UI.WebControls %> <SCRIPT LANGUAGE="VBScript" runat="server"> const Lx = 200 ' max width for thumbnails const Ly = 240 ' max height for thumbnails Dim upload_dir = "uploads/" ' directory to upload file Dim upload_original = "" ' filename to save original as (suffix added by script) Dim upload_thumb = "_thumb" ' filename to save thumbnail as (suffix added by script) Const upload_max_size = 250 ' max size of the upload (KB) note: this doesn't override any server upload limits Dim sFileName = "" dim fileExt ' used to store the file extension (saves finding it mulitple times) dim newWidth, newHeight as integer ' new width/height for the thumbnail dim l2 ' temp variable used when calculating new size dim fileFld as HTTPPostedFile ' used to grab the file upload from the form Dim originalimg As System.Drawing.Image ' used to hold the original image dim msg ' display results dim upload_ok as boolean ' did the upload work ? </script> <% randomize() ' used to help the cache-busting on the preview images upload_ok = false if lcase(Request.ServerVariables("REQUEST_METHOD"))="post" then fileFld = Request.Files(0) ' get the first file uploaded from the form (note:- you can use this to itterate through more than one image) upload_original = fileFld.FileName sFileName = Left(upload_original, Len(upload_original) - 4) if fileFld.ContentLength > upload_max_size * 1024 then msg = "Sorry, the image must be less than " & upload_max_size & "Kb" else try originalImg = System.Drawing.Image.FromStream(fileFld.InputStream) ' work out the width/height for the thumbnail. Preserve aspect ratio and honour max width/height ' Note: if the original is smaller than the thumbnail size it will be scaled up If (originalImg.Width/Lx) > (originalImg.Width/Ly) Then L2 = originalImg.Width newWidth = Lx newHeight = originalImg.Height * (Lx / L2) if newHeight > Ly then newWidth = newWidth * (Ly / newHeight) newHeight = Ly end if Else L2 = originalImg.Height newHeight = Ly newWidth = originalImg.Width * (Ly / L2) if newWidth > Lx then newHeight = newHeight * (Lx / newWidth) newWidth = Lx end if End If Dim thumb As New Bitmap(newWidth, newHeight) 'Create a graphics object Dim gr_dest As Graphics = Graphics.FromImage(thumb) ' just in case it's a transparent GIF force the bg to white dim sb = new SolidBrush(System.Drawing.Color.White) gr_dest.FillRectangle(sb, 0, 0, thumb.Width, thumb.Height) 'Re-draw the image to the specified height and width gr_dest.DrawImage(originalImg, 0, 0, thumb.Width, thumb.Height) try fileExt = System.IO.Path.GetExtension(fileFld.FileName).ToLower() originalimg.Save(Server.MapPath(upload_dir & sFileName & fileExt), originalimg.RawFormat) thumb.Save(Server.MapPath(upload_dir & sFileName & upload_thumb & fileExt), originalimg.RawFormat) msg = "Uploaded " & fileFld.FileName & " to " & Server.MapPath(upload_dir & sFileName & fileExt) upload_ok = true catch msg = "Sorry, there was a problem saving the image." end try ' Housekeeping for the generated thumbnail if not thumb is nothing then thumb.Dispose() thumb = nothing end if catch msg = "Sorry, that was not an image we could process." end try end if ' House Keeping ! if not originalImg is nothing then originalImg.Dispose() originalImg = nothing end if end if %> <html> <head> <title>ASP.NET File Upload and Resize Sample</title> <META NAME="Description" CONTENT="ASP.NET File Upload and Resize Sample (Hybrid VB.NET)"> <META NAME="Keywords" CONTENT="ASP.NET, ASP, NET, VB, VBScript, Image, Upload, Resize, Thumbnail, Constrain, Filesize, File, Size, Free"> <META NAME="Copyright" CONTENT="Rufan-Redi Pty Ltd 2005"> <META NAME="Author" CONTENT="System developed by Jeremy at http://www.Rufan-Redi.com"> <style type="text/css"> .style1 { width: 144px; } </style> </head> <body> <form id="Form1" enctype="multipart/form-data" method="post" runat="server"> <table> <tr><td class="style1">Select the file to upload:</td><td> <input type="file" name="upload_file" id="upload_file" title="upload_file"></td></tr> <tr><td colspan=2>Max upload size <%=upload_max_size%>Kb, gif/jpg/png only</td></tr> <tr><td colspan=2><input type="submit" value="Upload"></td></tr> </table> </form> <% if upload_ok then %> <table> <tr> <td valign=top><img src="<%=upload_dir & sFileName & fileExt & "?" & rnd()%>"></td> <td valign=top><img src="<%=upload_dir & sFileName & upload_thumb & fileExt & "?" & rnd()%>"></td> </tr> </table> <% else response.write(msg) end if %> </body> </html>