一般10M以下的文件上传通过设置Web.Config,再用VS2005自带的FileUpload控件就可以了,但是如果要上传100M甚至1G的文件就不能这样上传了,这时可以用NeatUpload来上传,步骤如下:
1,在工具箱中添加Brettle.Web.NeatUpload.dll,方法:打开VS2005--->点击'工具箱'--->选中一项,如:'常规'这项--->单击右键--->在弹出的菜单中选'选择项'--->在弹出的窗口中选择'浏览'--->找到'Brettle.Web.NeatUpload.dll'这个文件 --->按确定就添加上了,这时工具箱中多出几个控件出来,有InputFile,progressbar 等,我们主要用这两个.
2.复制文件夹NeatUpload到根目录!!!(我就疏忽了这一点,导致进度条出不来!)
3.拖放使用上传控件InputFile和进度条ProgressBar,添加上传文件的按钮.aspx页面代码如下:
1
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeBehind
=
"
LinkedContent.aspx.cs
"
2
Inherits
=
"
Koodoo.Web.LinkedContent
"
%>
3
4
<%
@ Register assembly
=
"
Brettle.Web.NeatUpload
"
namespace
=
"
Brettle.Web.NeatUpload
"
tagprefix
=
"
Upload
"
%>
5
6
<!
DOCTYPE html PUBLIC
"
-//W3C//DTD XHTML 1.0 Transitional//EN
"
"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
"
>
7
<
html xmlns
=
"
http://www.w3.org/1999/xhtml
"
>
8
<
head runat
=
"
server
"
>
9
<
title
></
title
>
10
</
head
>
11
<
body id
=
"
linkedcontent
"
>
12
<
form id
=
"
form1
"
runat
=
"
server
"
>
13
<
div
class
=
"
pagebox
"
>
14
<
div
class
=
"
innerbox
"
>
15
<
Upload:InputFile ID
=
"
attachFile
"
runat
=
"
server
"
/>
16
<
asp:Button ID
=
"
btnUpload
"
Text
=
"
上传
"
runat
=
"
server
"
onclick
=
"
btnUpload_Click
"
/>
17
<
br
/>
18
<
Upload:ProgressBar ID
=
"
ProgressBar1
"
runat
=
"
server
"
/>
19
</
div
>
20
</
div
>
21
</
form
>
22
</
body
>
23
</
html
>
4.给上传按钮添加Upload_Click事件:
1
protected
void
Upload_Click(
object
sender, EventArgs e)
2
{
3
if
(AttachFile.HasFile)
4
{
5
string
FileName
=
this
.AttachFile.FileName;
//
获取上传文件的文件名,包括后缀
6
string
ExtenName
=
System.IO.Path.GetExtension(FileName);
//
获取扩展名
7
string
SaveFileName
=
System.IO.Path.Combine(
8
System.Web.HttpContext.Current.Request.MapPath(
"
UpLoads/
"
),
9
DateTime.Now.ToString(
"
yyyyMMddhhmm
"
)
+
ExtenName);
//
合并两个路径为上传到服务器上的全路径
10
AttachFile.MoveTo(SaveFileName, Brettle.Web.NeatUpload.MoveToOptions.Overwrite);
11
string
url
=
"
UpLoads/
"
+
DateTime.Now.ToString(
"
yyyyMMddhhmmss
"
)
+
ExtenName;
//
文件保存的路径
12
float
FileSize
=
(
float
)System.Math.Round((
float
)AttachFile.ContentLength
/
1024000
,
1
);
//
获取文件大小并保留小数点后一位,单位是M
13
}
14
}
5.注意,要还在Web.Config里进行设置:
1
<
configuration
>
2
3
<
configSections
>
4
5
<
sectionGroup
name
="system.web"
>
6
7
<
section
name
="neatUpload"
8
type
="Brettle.Web.NeatUpload.ConfigSectionHandler,Brettle.Web.NeatUpload"
allowLocation
="true"
/>
9
10
</
sectionGroup
>
11
12
</
configSections
>
13
14
<
system.web
>
15
16
<
httpModules
>
17
18
<!--上传大文件
-->
19
20
<
add
name
="UploadHttpModule"
21
type
="Brettle.Web.NeatUpload.UploadHttpModule,Brettle.Web.NeatUpload"
/>
22
23
</
httpModules
>
24
25
<!--
useHttpModule="true" 设为true时才能看到上传状态,默认是False
-->
26
27
<
neatUpload
useHttpModule
="true"
maxNormalRequestLength
="1048576"
maxRequestLength
="1048576"
defaultProvider
="FilesystemUploadStorageProvider"
>
28
29
<
providers
>
30
31
<
add
name
="FilesystemUploadStorageProvider"
32
type
="Brettle.Web.NeatUpload.FilesystemUploadStorageProvider, Brettle.Web.NeatUpload"
/>
33
34
</
providers
>
35
36
</
neatUpload
>
37
38
<
httpRuntime
maxRequestLength
="1048576"
executionTimeout
="3600"
/>
39
40
</
system.web
>
41
42
</
configuration
>