::^乔乔^::明镜台::原创空间::C#.NET2.0,C++技术BLOG
人最重要的是心境,一颗平静安稳的心才能更好的进步,保持自己的心态.成为梦想中的高手QQ群:8664695
posts - 17,comments - 32,trackbacks - 0

最近在Q群里,有几个人问到的文件上传,大多数是问,如何判断,如何获取文件大小之类的,本文首先对FileUpload控件作出解析,

一般文件上传页面都会作为一个独立的页面处理,因为需要修改from标记的传输方式,尤其是使用FileUpload里的PostedFile属性的时候,必须要加上enctype="multipart/form-data".否则不能正确的获取到PostedFile属性,

而PostedFile属性里,封装了几个很有用的属性,分别是:ContentType、ContentLength、FileName、InputStream.

ContentType 主要获取文件的类型,而不是文件的后聚名,在一定程度上,可以起来类型判定的作用,

ContentLength 获取文件大小。

FileName 文件名字。

InputStream 以流方式输入。

这个InputStream其实是个很有用的东西,很多人想问,如果我要在上传的时候修改图片大小,帮图片加水印,这些加工工序,InputStream可以帮到你在上传文件的同时,作出上操作

下面是我一个例子的代码贴,主要作用是上传图片

ASPX页面

 

< table  width ="340px"  height ="180px"  style ="margin: 0px; padding: 0px" >
            
< tr >
                
< td  class ="td3"  width ="20px" >
                    
< asp:FileUpload  ID ="PhotoFileUpload"  runat ="server"   />
                    
< asp:Button  ID ="UpImageBtn"  runat ="server"  Text ="上传图片"  OnClick ="UpImageBtn_Click"   />
                
</ td >
            
</ tr >
            
< tr >
                
< td  class ="td4"  height ="140px"  valign ="top" >
                    
< ul  style ="color: mediumslateblue; text-align: left" >
                            
< li > 本系统只支持200K以内的图片 </ li >
                            
< li > 只支持JPG、GIF、PNG格式 </ li >
                        
</ ul >
                    
< asp:Panel  ID ="UpLoadedPanel"  runat ="server"  Visible ="false" >
                        
< ul  style ="color: Red; text-align: left" >
                            
< li > 文件位置: < asp:Literal  ID ="FilePlaceLi"  runat ="server" ></ asp:Literal ></ li >
                            
< li > 文件类型: < asp:Literal  ID ="FileTypeLi"  runat ="server" ></ asp:Literal ></ li >
                            
< li > 文件大小: < asp:Literal  ID ="FileLenghtLi"  runat ="server" ></ asp:Literal > KB </ li >
                        
</ ul >
                    
</ asp:Panel >
                
</ td >
            
</ tr >
            
< tr >
                
< td  class ="td3" >
                    
< asp:Label  ID ="MessageBoxLab"  runat ="server" ></ asp:Label >
                    
< input  type ="button"  id ="ClossWindows"  value ="完成"  onclick ="ThisOk()"   />
                
</ td >
            
</ tr >
        
</ table >

 

CS代码:

 1 protected   void  UpImageBtn_Click( object  sender, EventArgs e)
 2      {
 3          if  (Page.IsValid)
 4          {
 5              if  (PhotoFileUpload.HasFile)
 6              {
 7                 UpLoadedPanel.Visible  =   true ;
 8                 FilePlaceLi.Text  =  PhotoFileUpload.PostedFile.FileName;
 9                 FileLenghtLi.Text  =  (PhotoFileUpload.PostedFile.ContentLength  /   1024 ).ToString();
10                 FileTypeLi.Text  =  PhotoFileUpload.PostedFile.ContentType;
11                  string  fileName  =  PhotoFileUpload.FileName;
12                  string  strExPrentFile  =  fileName.Substring(fileName.LastIndexOf( " . " +   1 );
13                  string  strFileType  =  PhotoFileUpload.PostedFile.ContentType;
14                  string [] upExPrentFile  =   new   string []  " image/pjpeg " " image/gif " " image/x-png " } ;
15                  bool  IsUp  =   false ;
16                  for  ( int  i  =   0 ; i  <  upExPrentFile.Length; i ++ )
17                  {
18                      if  (strFileType.Trim().ToLower().Equals(upExPrentFile[i].ToLower()))
19                      {
20                         IsUp  =   true ;
21                     }

22                 }

23                  if  (IsUp)
24                  {
25                      string  SavePath  =   string .Format( " ../Photo/{0}.{1} " , DateTime.Now.ToString( " mmhhddss " ), strExPrentFile);
26
27
28                      if  ((PhotoFileUpload.PostedFile.ContentLength  /   1024 <   200 )
29                      {
30                          object  imag  =  PhotoFileUpload.PostedFile.InputStream;
31                         ImageSize mm  =   new  ImageSize(); //
32                          string  oo  =   "" ;
33                         mm.SaveThreePicture(imag, Server.MapPath(SavePath),  out  oo);
34
35                         MessageBoxLab.Text  =   " 上传成功 " ;
36                         HiddenText.Value  =  oo;
37                     }

38                      else
39                      {
40                         MessageBoxLab.Text  =   " 文件大小不允许超过200K " ;
41                     }

42                 }

43                  else
44                  {
45                     MessageBoxLab.Text  =   " 文件类型不正确 " ;
46                 }

47             }

48         }

49     }

50
posted on 2009-05-09 11:29 ^乔乔^ 阅读(1258) 评论(2)  编辑 收藏 引用 所属分类: c#

FeedBack:
# re: C#文件上传
2009-05-10 22:38 | evoup
你这明明是asp.net上传好不好?  回复  更多评论
  
# re: C#文件上传
2009-05-10 23:55 | 梁乔峰
@evoup
用C#写的.....不是C#文件上传吗?呵呵,切入点不同啊,我指的是语言
你想找WINFROM吧  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理