ASP.NET上传文件面面观

本文介绍两种图片上传方法:一种是直接将图片作为字节数组存储到数据库中,并提供了详细的实现步骤;另一种是将图片保存到服务器磁盘上,并记录文件路径到数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、上传到数据库。

(sqlserver为例)
存储文件的数据库中的字段为jimage,类型为image。

在代码中定义类型为byte[]的一个变量buf,在上传组件的PostFile中,从它的InputStream读出字节数组,将buf赋给数据字段jimage就可以了。

int len = this.File1.PostedFile.ContentLength; 
byte[] buf = new byte[len]; 
  
Stream i = this.File1.PostedFile.InputStream; 
i.Read(buf,0,buf.Length); 
news.jimage=buf;
//news为新闻类,jimage为它的图片属性,即对应表中的image
i.Close();

显示图像:

图片的显示也很简单,在Persister中注意一下:

SqlDataReader reader = SqlHelper.ExecuteReader("select jimage from news" );
 
if ( reader.Read() )
  {
 news.jimage = ( byte [])reader["jimage" ];
}
reader.Close();

得到byte[]的内容,要显示也比较简单,在Page_Load()方法中加两句话即可:

Response.ContentType = " image/jpeg " ;
Response.BinaryWrite(ti.content);

这样就可以输出图像了,如果想对图像做一点调整,如旋转,转换格式、获得图片格式(是jpg 还是 gif),请参考下面代码:

  // 同样,声明输出不是HTML而是image
  Response.ContentType = " image/jpeg " ;
 
  // 从byte[]得到一个image对象
  System.Drawing.Image bmap  =  Bitmap.FromStream( new  MemoryStream(ti.content));
  // 操作一下这个图像
   bmap.RotateFlip(RotateFlipType.Rotate180FlipY);
   // 输出到页面上
  bmap.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
// 释放image
bmap.Dispose();

要显示图片在某一个image控件上,可采用下法:

要显示图片的位置放一个image控件然后将它的src指向这个页面就行了!
例如:
页面:ViewImage.aspx

<%@Import Namespace="System.IO"%>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.SqlClient"%>
<%@ Page Language="C#" Debug="True" %>


显示图片的页面上放一个image控件imgZYF 在后代码中写:
imgZYF.ImageUrl =“ViewImage.aspx?UserID=" +userId

二、上传到服务器的磁盘:

   页面文件:upload01.aspx

<%@ Page language="c#" Codebehind="upload01.aspx.cs" AutoEventWireup="false" Inherits="upload01.upload01" %>


 
  上传到磁盘

 
 
  


   




    align="center">    
     

       













        border="0" align="center">        
         
选择文件:
         
        
        
         
输入备注:
         

          
                 
         
         
 
          
                
      
             
  

 


   后置代码:upload01.aspx

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace upload01
{

 public class upload01 : System.Web.UI.Page
 {
  protected System.Web.UI.HtmlControls.HtmlInputButton Button1;
  protected System.Web.UI.WebControls.TextBox TextBox1;
  protected System.Web.UI.HtmlControls.HtmlInputFile myfile;
 
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 昨夜风 www.zuoyefeng.com
  }

 

  private void Button1_ServerClick(object sender, System.EventArgs e)
  {
   //取得客户端路径及文件名
   string str=myfile.PostedFile.FileName;
   //取得文件类型,如.jpg
   string filename2=str.Substring(str.LastIndexOf(".")).ToString().Trim();
     // 取得文件大小,单位K
   double filesize=myfile.PostedFile.ContentLength/1024.00;
   //以时间刻度定义文件名
   string filename1=DateTime.Now.Ticks.ToString();
    myfile.PostedFile.SaveAs(Server.MapPath("/upload01/"+filename1+filename2));
   //将文件名及相关信息存到数据库中

  }
 }
}

   将文件上传到磁盘中,在表中将文件地址或路径记录下来,这样就可以在后面的程序来引用了。


 

Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1623366


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值