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. SqlConnection connection = new SqlConnection(connstr);
  15. SqlCommand command = new SqlCommand(sql, connection);
  16. connection.Open();
  17. SqlDataReader dr = command.ExecuteReader();
  18. if(dr.Read())
  19. {
  20. Response.ContentType = dr["imgtype"].ToString();
  21. Response.BinaryWrite( (byte[]) dr["imgdata"] );
  22. Response.Write(dr["IMGTITLE"].ToString());
  23. }
  24. connection.Close();
  25. }
  26. 〈/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上传文件到磁盘中,在表中将文件地址或路径记录下来,这样就可以在后面的程序来引用了。

新闻名称:ASP.NET上传文件面面观
本文来源:http://www.csdahua.cn/qtweb/news9/370459.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网