You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2010下ASP.NET Web应用无需点击按钮实现上传图片预览及缩放

问题描述

现有一段基于Visual Studio 2010开发的ASP.NET Web应用代码,功能是点击Button1按钮后,将上传的图片缩放并显示在ASP Image控件中。需求是无需点击Button1按钮,直接在上传后自动完成缩放并显示图片,且应用不支持JavaScript代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.IO;
using System.Drawing;

namespace imageResize1
{
    public partial class _Default : System.Web.UI.Page
    {
        string Strcon = ConfigurationManager.ConnectionStrings["con"].ConnectionString;

        protected void Page_Load(object sender, EventArgs e)
        {
            
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
                ProcessedImage();
        }


        private void ProcessedImage()

        {
            try
            {
                if (FileUpload1.HasFile)
                {

                    int length = 192;
                    int width = 192;

                    using (Bitmap sourceImage = new Bitmap(FileUpload1.PostedFile.InputStream))
                    {
                        using (Bitmap resizedImage = new Bitmap(length, width))
                        {
                            using (Graphics graphics = Graphics.FromImage(resizedImage))
                            {
                                graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
                                graphics.SmoothingMode = SmoothingMode.HighQuality;
                                graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;

                                graphics.DrawImage(sourceImage, 0, 0, length, width);
                            }

                            string resizedImagePath = Server.MapPath("~/Images/finalImage.png");
                            resizedImage.Save(resizedImagePath, ImageFormat.Png);

                            ImgPhoto.ImageUrl = "~/Images/finalImage.png";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string errorMessage = "An error occurred " + ex.Message;
            }
        }         
    }
}
实现方案

可以通过调整页面回发逻辑,实现文件上传后自动处理并显示图片,无需手动点击按钮,具体步骤如下:

  • 设置FileUpload自动回发
    在ASPX页面的FileUpload控件中添加AutoPostBack="true"属性,这样用户选择文件后,页面会自动触发回发。

  • 修改Page_Load方法触发处理逻辑
    调整后台代码的Page_Load方法,判断是否为回发请求且FileUpload已有上传文件,直接调用图片处理方法:

    protected void Page_Load(object sender, EventArgs e)
    {
        // 仅在回发且有上传文件时执行处理逻辑,避免首次加载触发
        if (IsPostBack && FileUpload1.HasFile)
        {
            ProcessedImage();
        }
    }
    
  • 移除Button1依赖
    此时Button1已不再需要,可直接从ASPX页面中移除该控件,保留也不会影响自动处理逻辑。

注意事项
  1. 确保项目中~/Images目录存在且具备读写权限,否则图片保存会失败。
  2. 当前代码会覆盖finalImage.png,多用户场景下建议给生成的图片添加唯一标识(如GUID),避免互相覆盖。
  3. 异常处理可优化,比如将错误信息显示在页面的Label控件中,方便用户查看问题原因。

内容的提问来源于stack exchange,提问作者KARTHIK LAGVANKAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 00:20:35