ASP.NET上传文件面面观

一、ASP.NET上传文件数据库。

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

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

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

显示图像:

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

 
 
 
  1. SqlDataReader reader=SqlHelper.ExecuteReader  
  2. ("select jimage from news");  
  3.    
  4. if( reader.Read() )  
  5. {  
  6.  news.jimage=(byte[])reader["jimage"];  
  7. }  
  8. reader.Close(); 

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

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

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

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

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

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

例如:

页面:ViewImage.aspx

 
 
 
  1. 〈%@Import Namespace="System.IO"%  〉  
  2. 〈%@Import Namespace="System.Data"%  〉  
  3. 〈%@Import Namespace="System.Data.SqlClient"%  〉  
  4. 〈%@ Page Language="C#" Debug="True" %  〉  
  5. 〈script runat="server"  〉  
  6. private void Page_Load(Object sender, System.EventArgs e)  
  7. {  
  8. string imgid =Request.QueryString["UserID"];  
  9. string connstr="data source=(local);initial   
  10. catalog=Test;integrated security=SSPI;persist   
  11. security info=True;packet size=4096";  
  12. string sql="SELECT IMGTITLE,imgdata,   
  13. imgtype FROM ImageStore WHERE id = '"+ imgid  "'";  
  14.  
  15.  
  16. SqlConnection connection = new SqlConnection(connstr);  
  17. SqlCommand command = new SqlCommand(sql, connection);  
  18. connection.Open();  
  19. SqlDataReader dr = command.ExecuteReader();  
  20.  
  21. if(dr.Read())  
  22. {  
  23. Response.ContentType = dr["imgtype"].ToString();  
  24. Response.BinaryWrite( (byte[]) dr["imgdata"] );  
  25. Response.Write(dr["IMGTITLE"].ToString());  
  26. }  
  27. connection.Close();  
  28. }  
  29. 〈/script  〉  

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

二、ASP.NET上传文件到服务器的磁盘:

页面文件:upload01.aspx

 
 
 
  1. 〈%@Pagelanguage="c#"Codebehind="upload01.aspx.cs" 
  2. AutoEventWireup="false"Inherits="upload01.upload01"%〉  
  3. 〈!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"〉  
  4. 〈HTML〉  
  5. 〈HEAD〉  
  6. 〈title〉上传到磁盘〈/title〉  
  7. 〈/HEAD〉  
  8. 〈body〉  
  9. 〈formid="Form1"method="post"runat="server"〉  
  10. 〈TABLEheight="300"cellSpacing="1"cellPadding="1" 
  11. width="500"border="0"class="bigtable-bj" 
  12. align="center"〉  
  13. 〈TR〉  
  14. 〈TD〉〈FONTface="宋体"〉  
  15. 〈TABLEid="Table1"style="WIDTH:384px;HEIGHT:54px" 
  16. cellSpacing="1"cellPadding="1"width="384" 
  17. border="0"align="center"〉  
  18. 〈TR〉  
  19. 〈TD〉选择文件:〈/TD〉  
  20. 〈TD〉〈INPUTtype="file"id="myfile"runat="server"〉〈/TD〉  
  21. 〈/TR〉  
  22. 〈TR〉  
  23. 〈TDstyle="HEIGHT:21px"〉输入备注:〈/TD〉  
  24. 〈TDstyle="HEIGHT:21px"〉  
  25. 〈asp:TextBoxid="TextBox1"runat="server"〉〈/asp:TextBox〉〈/TD〉  
  26. 〈/TR〉  
  27. 〈TR〉  
  28. 〈TD〉〈/TD〉  
  29. 〈TD〉〈INPUTtype="button"value="上传文件" 
  30. runat="server"id="Button1"name="Button1"〉   
  31. 〈INPUTtype="submit"value="清空选择"〉〈/TD〉  
  32. 〈/TR〉  
  33. 〈/TABLE〉  
  34. 〈/FONT〉  
  35. 〈/TD〉  
  36. 〈/TR〉  
  37. 〈/TABLE〉  
  38. 〈/form〉  
  39. 〈/body〉  
  40. 〈/HTML〉  
  41. 后置代码:upload01.aspx  
  42. usingSystem;  
  43. usingSystem.Collections;  
  44. usingSystem.ComponentModel;  
  45. usingSystem.Data;  
  46. usingSystem.Drawing;  
  47. usingSystem.Web;  
  48. usingSystem.Web.SessionState;  
  49. usingSystem.Web.UI;  
  50. usingSystem.Web.UI.WebControls;  
  51. usingSystem.Web.UI.HtmlControls;  
  52. namespaceupload01  
  53. {  
  54. publicclassupload01:System.Web.UI.Page  
  55. {  
  56. protectedSystem.Web.UI.HtmlControls.HtmlInputButtonButton1;  
  57. protectedSystem.Web.UI.WebControls.TextBoxTextBox1;  
  58. protectedSystem.Web.UI.HtmlControls.HtmlInputFilemyfile;  
  59. privatevoidPage_Load(objectsender,System.EventArgse)  
  60. {  
  61. //昨夜风www.zuoyefeng.com  
  62. }  
  63. privatevoidButton1_ServerClick  
  64. (objectsender,System.EventArgse)  
  65. {  
  66. //取得客户端路径及文件名  
  67. stringstr=myfile.PostedFile.FileName;  
  68. //取得ASP.NET上传文件类型,如.jpg  
  69. stringfilename2=str.Substring 
  70. (str.LastIndexOf(".")).ToString().Trim();  
  71. //取得ASP.NET上传文件大小,单位K  
  72. doublefilesize=myfile.PostedFile.ContentLength/1024.00;  
  73. //以时间刻度定义文件名  
  74. stringfilename1=DateTime.Now.Ticks.ToString();  
  75. myfile.PostedFile.SaveAs(Server.MapPath  
  76. ("/upload01/"+filename1+filename2));  
  77. //将文件名及相关信息存到数据库中  
  78. }  
  79. }  
  80. }  

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

【编辑推荐】

  1. ASP.NET环境下的Shell函数
  2. 在ASP.NET中向数据库批量插入数据
  3. ASP.NET用Post方式向网页发送数据
  4. ASP.NET 2.0部署WEB应用程序浅析
  5. ASP.NET中的HttpWorkerRequest对像
  6. 介绍ASP.NET MVC框架
免责声明:文章内容不代表本站立场,仅供读者参考。产品相关技术问题请发送工单。 本文链接:https://www.idc.net/help/414138/

为您推荐

开源数据收集引擎 Logstash 讲解和示例讲解

一、概述 Logstash 是一个开源的数据收集和日志处理工具,它是 Elastic Stack(ELK Stack)的一部分,用于从各种数据源中采集、转换和传输数据,以帮助分析和可视化大规模数据。Logstash 通常与 Elasticsearch 和 Ki...

八个开源免费单点登录(SSO)系统

单点登录(SSO)是一个登录服务层,通过一次登录访问多个应用。使用SSO服务可以提高多系统使用的用户体验和安全性,用户不必记忆多个密码、不必多次登录浪费时间。 下面推荐一些市场上最好的开源SSO系统,可作为商业SSO替代。 1.Authelia https://github.com/authelia/authelia ...

浅谈HBase数据结构和系统架构

Part 01 LSM树模型 常见的的关系型数据库,如MySQL、SQL Server、Oracle等,使用B+ Tree作为数据存储与索引的基本结构,非叶子节点只存放索引数据,叶子节点存放所有数据和指向相邻节点的指针,具有高效的范围查询和稳定的查找效率,以及具有较小的读放大和空间放大。采用磁盘随机读写方式,且以磁盘数...

微软Radius平台重构现代应用程序部署

微软的 Azure 孵化团队日前推出一个叫 Radius 的新应用平台。Radius 平台可用于在 Kubernetes、公共云和边缘环境中运行各种现代应用程序。 Radius 是一个开源项目,最初支持的应用程序运行时包括Kubernetes、Azure和AWS,以后还会支持诸如谷歌云平台等云环境。 Mark Russ...

Ext JS3.0正式版发布

Ext JS3.0在经历数次RC版之后,extjs.com终于发布3.0的正式版。总体而言,较2.0改进不大,依然还是原理的组件模型,具体更新及改进如下: ◆提供了参照DWR后与后台的通讯包Direct,支持具有明显的REST风格的CRUD服务 ◆一系列的新的组件和例子,包括有图表(Charting, By YUI F...
返回顶部