ASP.NET 使用 FormData 实现 AJAX 上传图片
图片上传在 Web 开发中应用十分广泛,我们平时发朋友圈、发微博都用到了上传图片。正好在项目中用到了 AJAX 上传图片,就顺便更新下博客。 关于 FormData FormData 是为序列化表以及创建与表单相同的数据(用于 XHR 传输)提供便利。FormData 翻译过来就是表单数据,说白了就是方便我们用它来进行 AJAX 操作,想要继续了解的朋友可以百度一下。 ...
图片上传在 Web 开发中应用十分广泛,我们平时发朋友圈、发微博都用到了上传图片。正好在项目中用到了 AJAX 上传图片,就顺便更新下博客。 关于 FormData FormData 是为序列化表以及创建与表单相同的数据(用于 XHR 传输)提供便利。FormData 翻译过来就是表单数据,说白了就是方便我们用它来进行 AJAX 操作,想要继续了解的朋友可以百度一下。 ...
前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UploadPic.aspx.cs" Inherits="UploadPicDemo.UploadPic" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>ASP.NET上传图片</title> </head> <body> <form id="form1" runat="server"> <div> <asp:Image ID="imagePic" runat="server" /> <br /> <asp:FileUpload ID="fileUpload" runat="server" /> <asp:Button ID="btnUpload" runat="server" Text="上传" OnClick="btnUpload_Click" /> <br /> <asp:Label ID="lblMessage" runat="server"></asp:Label> </div> </form> </body> </html> 后台代码: //上传按钮单击事件 protected void btnUpload_Click(object sender, EventArgs e) { if (fileUpload.HasFile) { //获取上传的文件名 string fileName = fileUpload.FileName; //获取上传文件的文件后缀名 string fileFix = fileName.Substring(fileName.LastIndexOf('.') + 1).ToLower(); if (fileFix != "png" && fileFix != "jpg" && fileFix != "jpeg" && fileFix != "gif") { this.lblMessage.Text = "上传的文件不是图片类型文件"; } else { fileUpload.SaveAs(Server.MapPath(".") + "//UploadPic//" + fileName); this.imagePic.ImageUrl = "~/UploadPic/" + fileName; this.lblMessage.Text = "图片上传成功!"; } } } 这是一篇过去很久的文章,其中的信息可能已经有所发展或是发生改变。 ...
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data; using System.Data.SqlClient; namespace GFAMS { class DBHelper { //数据库连接字符串 private static string connStr = "Data Source=.;Initial Catalog=数据库名;Integrated Security=True"; /// <summary> /// 内部数据连接对象 /// </summary> private static SqlConnection Conn = null; /// <summary> /// 内部实例对象 /// </summary> private static DBHelper Instance = null; private DBHelper() { } /// <summary> /// 静态方法,获取数据库连接实例 /// </summary> /// <returns>数据库连接实例</returns> public static DBHelper GetInstance() { if (DBHelper.Instance == null) { DBHelper.Instance = new DBHelper(); } return DBHelper.Instance; } /// <summary> /// 初始化数据库连接 /// </summary> public void InitConnection() { //如果连接对象不存在,则创建连接 if (Conn == null) Conn = new SqlConnection(connStr); //如果连接对象关闭,则打开连接 if (Conn.State.Equals(ConnectionState.Closed)) Conn.Open(); //如果连接中断,则重启连接 if (Conn.State.Equals(ConnectionState.Broken)) { Conn.Close(); Conn.Open(); } } /// <summary> /// 查询、获取 DataReader /// </summary> /// <param name="sqlStr">Sql语句</param> /// <returns>SqlDataReader 数据集</returns> public SqlDataReader GetDataReader(string sqlStr) { InitConnection(); SqlCommand cmd = new SqlCommand(sqlStr, Conn); //CommandBehavior.CloseConnection 命令行为:当 DataReader 对象被关闭时,自动关闭占用的连接对象 return cmd.ExecuteReader(CommandBehavior.CloseConnection); } /// <summary> /// 查询、获取 DataTable /// </summary> /// <param name="sqlStr">Sql语句</param> /// <returns>DataTable 数据表</returns> public DataSet GetDataSet(string sqlStr) { InitConnection(); DataSet ds = new DataSet(); SqlDataAdapter dap = new SqlDataAdapter(sqlStr, Conn); dap.Fill(ds); Conn.Close(); return ds; } /// <summary> /// 执行增删改 /// </summary> /// <param name="sqlStr">Sql语句</param> /// <returns>受影响行数</returns> public int ExecuteNonQuery(string sqlStr) { InitConnection(); SqlCommand cmd = new SqlCommand(sqlStr, Conn); int rows = cmd.ExecuteNonQuery(); Conn.Close(); return rows; } /// <summary> /// 执行聚合函数 /// </summary> /// <param name="sqlStr">Sql语句</param> /// <returns>Object对象</returns> public object ExecuteScalar(string sqlStr) { InitConnection(); SqlCommand cmd = new SqlCommand(sqlStr, Conn); object result = cmd.ExecuteScalar(); Conn.Close(); return result; } } } 这是一篇过去很久的文章,其中的信息可能已经有所发展或是发生改变。 ...
捕获当前窗体: string Path = @"E:/Test/"; //文件保存路径 int width = this.Size.Width; //当前窗体宽度 int heigh = this.Size.Height; //当前窗体高度 Bitmap bmp = new Bitmap(width, heigh); //新建一个 Bitmap 位图 string FileName = Path + DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + new Random().Next(999) + ".jpg"; this.DrawToBitmap(bmp, new Rectangle(0, 0, width, heigh)); //将当前屏幕画到 Bitmap 位图上 bmp.Save(FileName, System.Drawing.Imaging.ImageFormat.Jpeg); //保存图片 捕获整个屏幕: string Path = @"E:/Test/"; //文件保存路径 int width = Screen.PrimaryScreen.Bounds.Width; //主屏幕宽度 int height = Screen.PrimaryScreen.Bounds.Height; //主屏幕高度 Bitmap bmp = new Bitmap(width, height); //新建一个 Bitmap 位图 Graphics g = Graphics.FromImage(bmp); //从 Bitmap 位图创建 Graphics g.CopyFromScreen(new Point(0, 0), new Point(0, 0), new Size(width, height)); g.ReleaseHdc(g.GetHdc()); string FileName = Path + DateTime.Now.ToString("yyyyMMddHHmmss") + "_" + new Random().Next(999) + ".jpg"; bmp.Save(FileName); 源码下载:x 效果图:x 不足:捕获时将 Winform 窗体一起捕获进去了。解决办法:当点击捕获屏幕按钮时,将当前窗体隐藏,截图成功后再显示。 ...
根据学生信息管理系统使用要求,程序要实现添加、删除、修改、查询、退出功能,而这就用到了数组结构、循环结构、检索方法和退出程序的方法。 定义一个二维字符串数组,用于储存学生信息: ...