图片保存的两种方法

前台页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="图片二进制存储与读取_Default" %> 无标题页




添加附件








保存图片的两种方法介绍

一种是保存为二进制数据
优点:安全,便于管理和维护,对于图片的操作,如复制,转移等都很方便和快捷。
缺点:文件的读取和保存直接来源于数据库,在读取和保存时相对较慢,因为中间需要和二进制流进行相互转换,数据库文件相对较大,存取数据量较大,存储比较占数据库空间。

一种是保存图片路径
优点:存取数据量小,读取速度较快。
缺点:实体和文件分离的方式,服务器端还要有文件夹来保存这些图片(上传),所以一旦文件夹不小心丢失,所有图片就找不回了。

后台文件:

/*** 图片存储 ***/using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using FoxZip;using System.Text;using System.IO;using MicrosoftHelper;using System.Data.SqlClient;public partial class 图片二进制存储与读取_Default : BasePage{ protected void Page_Load(object sender, EventArgs e) { } //这种方法目前没有进行路径的入库操作 protected void btnSend_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); int attCount = 0; string filePath = ""; for (int i = 0; i < Request.Files.Count; i++) { if (Request.Files[i].ContentLength > 0) { filePath = Request.Files[i].FileName; sb.Append("Files" + ++attCount + ": " + filePath + "
"); Request.Files[0].SaveAs(Server.MapPath("./") + filePath.Substring(filePath.LastIndexOf("//") + 1)); } } sb.Insert(0, "you upload " + attCount + " files.
"); Response.Write(sb.ToString()); } protected void btnSend1_Click(object sender, EventArgs e) { HttpPostedFile upImages = ImgUpload.PostedFile; //获取对由客户端制定的上载文件的访问 int ImagesLength = upImages.ContentLength; //获取上载文件的大小(以字节为单位) byte[] ImageArray = new byte[ImagesLength]; Stream ImageSream = upImages.InputStream; //获取一个Stream对象,该对象指向一个上载文件,以准备读取该文件的内容 ImageSream.Read(ImageArray, 0, ImagesLength); //读取文件 byte[] buffer = null; buffer = ZipHelper.ZipCompress(ImageArray); try { SqlParameter[] p = new SqlParameter[1]; p[0] = new SqlParameter("@UpdateImage", buffer); SqlHelper.ExecuteNonQuery(this.connStr, CommandType.StoredProcedure, "p_UpdateImage", p); } catch { AlertMessage("保存失败"); } finally { ImageSream.Close(); } }}

你可能感兴趣的:(效果实现)