本文主要给大家介绍在.net平台下如何上传文件,以下是我的学习经验,很高兴跟大家分享。

一、上传到数据库。

(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

 

显示图片的页面上放一个image控件imgZYF 在后代码中写:

imgZYF.ImageUrl =“ViewImage.aspx?UserID=" +userId

 

 

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

 

页面文件:upload01.aspx

后置代码:upload01.aspx

 

.net上传图片代码 .net 上传文件_.net上传图片代码

.net上传图片代码 .net 上传文件_UI_02

代码

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)); 

//将文件名及相关信息存到数据库中 


} 

} 

}

 

 

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

 

 

文件下载

.net上传图片代码 .net 上传文件_.net上传图片代码

.net上传图片代码 .net 上传文件_UI_02

代码

///   <summary> 
///   文件下载 
///   </summary> 
///   <param   name= "FullFileName "> </param> 
private   void   FileDownload(string   FullFileName) 
{ 
FileInfo   DownloadFile   =   new   FileInfo(FullFileName);   
Response.Clear(); 
Response.ClearHeaders(); 
Response.Buffer=false; 
Response.ContentType= "application/octet-stream "; 
Response.AppendHeader( "Content-Disposition ", "attachment;filename= "   +HttpUtility.UrlEncode(DownloadFile.FullName,System.Text.Encoding.UTF8)); 
Response.AppendHeader( "Content-Length ",DownloadFile.Length.ToString()); 
Response.WriteFile(DownloadFile.FullName); 
Response.Flush(); 
Response.End(); 
}