laifangsong's blog
取长补短,精益求精。 (打个广告,想做手机网站和asp/asp.net网站的可以跟我联系.QQ:25313644)
posts - 51, comments - 185, trackbacks - 0, articles - 0
博客园
::
首页
::
新随笔
::
联系
::
订阅
::
管理
单个文件上传类(可以自定义配置)
Posted on 2007-05-30 09:53
laifangsong
阅读(538)
评论(0)
编辑
收藏
所属分类:
开发常用
调用可以很灵活,代码如下:
using
System;
using
System.Configuration;
using
System.Web;
using
System.Web.UI;
using
System.Text;
using
System.IO;
namespace
aspnet_test
{
///
<summary>
///
单个文件上传类
///
///
可以自定义:上传目录,上传文件类型、大小,是否使用随机上传文件名。
///
///
作者:laifangsong QQ:25313644 GMail:laifangsong@gmail.com
///
原文:
http://www.cnblogs.com/jiny-z/archive/2007/05/30/764762.html
///
</summary>
public
class
UploadFile_Single
{
/*
web.config设置:
* <appSettings>
* <add key="uploadDir" value="UploadFiles/" />
* <add key="uploadFileExt" value="gif|jpg|jpeg|png|bmp|doc|xls|hlp|chm|rar|zip" />
* <add key="uploadFileSize" value="2048" />
* <add key="isUseRandFileName" value="true" />
* </appSettings>
*
* private string uploadDir = ConfigurationSettings.AppSettings["uploadDir"];;
* private string uploadFileExt = ConfigurationSettings.AppSettings["uploadFileExt"];
* private int uploadFileSize = int.Parse(ConfigurationSettings.AppSettings["uploadFileExt"]);
* private bool isUseRandFileName = bool.Parse(ConfigurationSettings.AppSettings["uploadFileExt"]);
*
*/
//
上传目录,相对于本文件路径;以“/”结尾;如果目录不存在,会自动创建;如果要启用绝对路径,写法:“/虚拟目录名称/上传文件目录名称/”
private
string
uploadDir
=
"
UploadFiles/
"
;
//
允许上传文件类型,逗号隔开
private
string
uploadFileExt
=
"
gif|jpg|jpeg|png|bmp|doc|xls|hlp|chm|rar|zip
"
;
//
允许上传文件大小,k 为单位
private
int
uploadFileSize
=
2048
;
//
是否使用随机上传文件名;如果不使用,会覆盖上传目录的同名文件
private
bool
isUseRandFileName
=
true
;
//
上传结果
private
string
uploadResult
=
""
;
//
上传文件保存路径
private
string
uploadPath
=
""
;
public
string
UploadDir
{
get
{
return
uploadDir;
}
set
{
uploadDir
=
value;
}
}
public
string
UploadFileExt
{
get
{
return
uploadFileExt;
}
set
{
uploadFileExt
=
value;
}
}
public
int
UploadFileSize
{
get
{
return
uploadFileSize;
}
set
{
uploadFileSize
=
value;
}
}
public
bool
IsUseRandFileName
{
get
{
return
isUseRandFileName;
}
set
{
isUseRandFileName
=
value;
}
}
public
string
UploadResult
{
get
{
return
uploadResult;
}
}
public
string
UploadPath
{
get
{
return
uploadPath;
}
}
//
上传文件方法
public
bool
Upload(Page page)
{
HttpPostedFile uploadFile
=
page.Request.Files[
0
];
//
获取上传文件属性
string
fileFullName
=
uploadFile.FileName;
string
contentType
=
uploadFile.ContentType;
int
contentLength
=
uploadFile.ContentLength;
//
取得文件名
string
fileName
=
System.IO.Path.GetFileName(fileFullName);
//
取得扩展名
string
fileExt
=
System.IO.Path.GetExtension(fileName).Remove(
0
,
1
);
//
检测文件类型
if
( (
"
|
"
+
UploadFileExt
+
"
|
"
).IndexOf( (
"
|
"
+
fileExt
+
"
|
"
) )
<
0
)
{
uploadResult
=
"
<font color='red'><b>上传文件格式错误!允许上传文件类型(
"
+
uploadFileExt
+
"
)</b></font>
"
;
return
false
;
}
//
检测文件大小
if
(contentLength
<
1
||
contentLength
>
uploadFileSize
*
1024
)
{
uploadResult
=
"
<font color='red'><b>上传文件大小错误!最大允许上传
"
+
uploadFileSize
+
"
KB</b></font>
"
;
return
false
;
}
//
如果上传目录不存在,创建目录
if
(
!
uploadDir.EndsWith(
"
/
"
)) uploadDir
+=
"
/
"
;
string
tempPath
=
""
;
string
tempMapPath
=
""
;
string
tempDir
=
uploadDir.Substring(
0
,
1
)
!=
"
/
"
?
uploadDir : uploadDir.Substring(uploadDir.IndexOf(
"
/
"
,
2
)
+
1
) ;
while
(tempDir.IndexOf(
"
/
"
)
>=
0
)
{
tempPath
+=
tempDir.Substring(
0
, tempDir.IndexOf(
"
/
"
)
+
1
);
tempMapPath
=
System.Web.HttpContext.Current.Server.MapPath(tempPath);
if
(
!
Directory.Exists(tempMapPath))
{
Directory.CreateDirectory(tempMapPath);
}
tempDir
=
tempDir.Substring(tempDir.IndexOf(
"
/
"
)
+
1
);
}
//
随机文件名
if
(isUseRandFileName)
{
fileName
=
DateTime.Now.ToString(
"
yyyyMMddhhmmss
"
)
+
(
new
Random()).Next(
100
,
1000
).ToString()
+
"
.
"
+
fileExt;
}
string
saveFilePath
=
System.Web.HttpContext.Current.Server.MapPath(uploadDir)
+
@"
\
"
+
fileName;
uploadFile.SaveAs(saveFilePath);
uploadPath
=
uploadDir
+
fileName;
//
SaveUploadPathToDB(uploadPath);
uploadResult
+=
"
<font color='blue'><b>文件上传成功!</b></font>
"
+
"
<br/><br/>
"
+
"
<b>保存位置:</b>
"
+
uploadPath;
return
true
;
}
//
将上传文件路径存入数据库
private
void
SaveUploadPathToDB(
string
uploadPath)
{
//
string sql = "update table 1 set f_uploadpath='" & uploadPath & "' where
";
//
TSQL.ExecuteNonQuery(sql, null);
}
}
}
调用:
UploadFile_Single upfile
=
new
UploadFile_Single();
upfile.Upload(
this
);
UploadFile_Single upfile
=
new
UploadFile_Single();
upfile.UploadDir
=
"
UploadFiles/
"
;
upfile.UploadFileExt
=
"
gif|jpg|jpeg|png|bmp
"
;
upfile.UploadFileSize
=
1024
;
upfile.IsUseRandFileName
=
true
;
upfile.Upload(
this
);
UploadFile_Single upfile
=
new
UploadFile_Single();
upfile.UploadDir
=
"
/虚拟目录名称/UploadFiles/1/2/3/
"
;
upfile.UploadFileExt
=
"
gif|jpg|jpeg|png|bmp
"
;
upfile.UploadFileSize
=
1024
;
upfile.IsUseRandFileName
=
true
;
upfile.Upload(
this
);
Response.Write(upfile.UploadResult); //上传结果信息
Response.Write(upfile.UploadPath); //上传保存路径
(上传目录可以用绝对路径,也可用相对路径;如果上传目录不存在,会自动创建)
社区
新闻
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2007-05-30 10:05 编辑过
另存
打印
所属分类的其他文章:
·
单个文件上传类(可以自定义配置)
·
正则表达式收集
·
单/多文件上传。
·
三级联动.
·
二级联动.
·
asp/asp.net中遍历树型结构.
最新IT新闻:
·
《福布斯》:暴雪的新一波完美风暴已经到来
·
中国互联网公司在哪儿
·
微软:Silverlight内容也可被搜索引擎检索
·
内置AI技术 三星聪明微波炉还能上网
·
盛大设文学公司 原新浪博客负责人侯小强任CEO
博客园新闻频道
博客园首页
社区
Powered by:
博客园
Copyright © laifangsong
日历
<
2007年5月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
与我互动
给我发短消息
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(10)
给我留言
查看公开留言
查看私人留言
我参与的团队
福州.NET俱乐部(0/509)
数据库团队(1/193)
随笔分类
asp(4)
asp.net三层开发(1)
bugs(2)
sqlserver2000(5)
概念(6)
感悟(3)
开发常用(6)
算法(16)
提问(3)
随笔档案
2007年12月 (1)
2007年8月 (2)
2007年7月 (1)
2007年6月 (3)
2007年5月 (1)
2007年4月 (3)
2007年2月 (1)
2007年1月 (3)
2006年11月 (4)
2006年10月 (9)
2006年9月 (2)
2006年8月 (1)
2006年4月 (12)
2006年3月 (8)
asp.net blog
Dflying Chen
AJAX
老燕
编程思想
吕震宇
设计模式
搜索
积分与排名
积分 - 36783
排名 - 1029
最新评论
1. re: 按比例显示缩略图,防止变形
还是有用的,只设宽或高, 需不会变形,但是图片大小不一,不美观
--green source
2. re: 为什么点击flash链接到本页面,Request.Referrer将无法获得url来源
可以在falsh跳转页面前,在falsh加上url跳转
--netcpl
3. re: 刚刚写的功能不错的分页存储过程,可支持多表查询,任意排序。
非常好用。哈哈。不错。
--hiee23
4. 多条件存储过程排序确实是个难题......
多条件存储过程排序确实是个难题......
--orphen1758
阅读排行榜
1. 刚刚写的功能不错的分页存储过程,可支持多表查询,任意排序。(4276)
2. asp/asp.net中遍历树型结构.(4250)
3. 今天早上失败的面试经历。如果是你,这些问题你会怎么回答?-.-...(2672)
4. c#实现迷宫算法。(2217)
5. 三级联动.(877)
评论排行榜
1. 刚刚写的功能不错的分页存储过程,可支持多表查询,任意排序。(44)
2. 今天早上失败的面试经历。如果是你,这些问题你会怎么回答?-.-...(33)
3. asp/asp.net中遍历树型结构.(22)
4. 到日本人开的公司(福州软件园内)去面试,需要注意些什么?(11)
5. 不错的分页存储过程(转)(10)