最近在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
^乔乔^ 阅读(1337)
评论(2) 编辑 收藏 引用 所属分类:
c#