zoukankan
html css js c++ java
写了个文件上传操作的类
源代码如下:
/**/
///
<summary>
///
文件上传类
///
</summary>
public
class
UploadFile
{
public
string
UploadInfo;
//
文件上传的返回信息。
public
bool
UploadState;
//
文件上传的返回状态。
private
string
strFileType;
//
允许上传文件的类型。
private
int
intFileSize;
//
上传文件大小的最大长度。
private
string
strNewFileName;
//
上传后的文件名。
public
UploadFile()
{
strFileType
=
""
;
//
将允许上传的文件类型列表初始为空。
UploadInfo
=
"
NONE
"
;
//
将文件上传的返回信息初始为无。
UploadState
=
false
;
//
将文件上传的返回状态初始为假。
intFileSize
=
102400
;
//
默认上传文件大小的最大长度为100K。
}
/**/
///
<summary>
///
上传本地文件到服务器。
///
</summary>
///
<param name="strSaveDir">
在服务器端保存的物理路径。
</param>
///
<param name="HtmCtrlObjUploadFile">
上传的文件对象。
</param>
///
<returns></returns>
public
void
ExecUploadFile(
string
strSaveDir,HtmlInputFile HtmCtrlObjUploadFile)
{
if
(HtmCtrlObjUploadFile.PostedFile.ContentLength
==
0
)
//
判断是否有文件需要上传或所选文件是否为0字节。
{
UploadInfo
=
"
没有选择要上传的文件或所选文件大小为0字节
"
;
UploadState
=
false
;
return
;
//
返回文件上传状态和信息。
}
if
(HtmCtrlObjUploadFile.PostedFile.ContentLength
>
intFileSize)
//
限制要上传的文件大小(byte)。
{
UploadInfo
=
"
上传的文件超过限制大小(
"
+
(intFileSize
/
1024
).ToString()
+
"
K)
"
;
UploadState
=
false
;
return
;
//
返回文件上传状态和信息。
}
int
intFileExtPoint
=
HtmCtrlObjUploadFile.PostedFile.FileName.LastIndexOf(
"
.
"
);
string
strFileExtName
=
HtmCtrlObjUploadFile.PostedFile.FileName.Substring(intFileExtPoint
+
1
);
//
获取要上传的文件的后缀名。
if
(strFileType.ToUpper().IndexOf(strFileExtName.ToUpper().Trim())
==-
1
)
//
判断要上传的文件类型的是否在允许的范围内。
{
UploadInfo
=
"
不允许上传的文件类型(允许的类型:|
"
+
this
.GetUploadFileType()
+
"
)
"
;
UploadState
=
false
;
return
;
//
返回文件上传状态和信息
}
DateTime dteNow
=
DateTime.Now;
//
定义日期对象,为上传后的文件命名。
strNewFileName
=
dteNow.Year.ToString()
+
dteNow.Month.ToString()
+
dteNow.Day.ToString()
+
GetRandomStr(
8
)
+
"
.
"
+
strFileExtName;
//
随机地为上传后的文件命名。
HtmCtrlObjUploadFile.PostedFile.SaveAs(
this
.GetSaveDirectory(strSaveDir)
+
strNewFileName);
//
以新的文件名保存上传的文件到指定物理路径。
UploadInfo
=
"
文件上传成功
"
;
//
返回上传后的服务器端文件物理路径。
UploadState
=
true
;
}
/**/
///
<summary>
///
获取指定位数的随机数。
///
</summary>
///
<param name="RndNumCount">
随机数位数。
</param>
///
<returns></returns>
private
string
GetRandomStr(
int
RndNumCount)
{
string
RandomStr;
RandomStr
=
""
;
Random Rnd
=
new
Random();
for
(
int
i
=
1
;i
<=
RndNumCount;i
++
)
{
RandomStr
+=
Rnd.Next(
0
,
9
).ToString();
}
return
RandomStr;
}
/**/
///
<summary>
///
获取当前允许上传的文件类型。
///
</summary>
///
<returns>
返回包含所有的可上传文件类型集字符串,如为空则不允许任何类型的文件。
</returns>
public
string
GetUploadFileType()
{
return
strFileType;
}
/**/
///
<summary>
///
添加允许上传的文件类型。
///
</summary>
///
<param name="strAddFileType">
要添加的文件类型后缀名,可以用"|"号区别添加多个文件后缀名。
</param>
public
void
AddUploadFileType(
string
strAddFileType)
{
strFileType
+=
(strAddFileType
+
"
|
"
);
//
以“|”符号作为每个类型的分隔符。
}
/**/
///
<summary>
///
获取上传文件的限制大小。
///
</summary>
///
<returns>
返回上传文件的限制大小。
</returns>
public
int
GetUploadFileSize()
{
return
intFileSize;
}
/**/
///
<summary>
///
设置上传文件的限制大小。
///
</summary>
///
<param name="intSetFileSize">
上传文件的限制大小(KB)。
</param>
public
void
SetUploadFileSize(
int
intSetFileSize)
{
intFileSize
=
intSetFileSize
*
1024
;
//
将Byte换算为KB
}
/**/
///
<summary>
///
获取上传后的新文件名。
///
</summary>
///
<returns>
返回上传后的新文件名。
</returns>
public
string
GetUploadFileNewName()
{
return
strNewFileName;
}
/**/
///
<summary>
///
获取上传文件存放目录。
///
</summary>
///
<param name="DirectoryPath">
存放文件的物理路径。
</param>
///
<returns>
返回存放文件的目录。
</returns>
public
string
GetSaveDirectory(
string
DirectoryPath)
{
if
(
!
Directory.Exists(DirectoryPath))
//
判断当前目录是否存在。
{
Directory.CreateDirectory(DirectoryPath);
//
建立上传文件存放目录。
}
return
DirectoryPath;
}
}
调用方式:
CUploadImage.AddUploadFileType(
"
jpg|jpeg|gif|bmp|png
"
);
//
添加允许上传文件的类型。
CUploadImage.SetUploadFileSize(
300
);
//
设置上传文件大小(KB);
CUploadImage.ExecUploadFile(strUploadPath,inputFile);
//
上传所选文件。
if
(CUploadImage.UploadState)
//
判断文件是否上传成功。
{
DoSomeThing...
}
else
{
DoSomeThing...
}
查看全文
相关阅读:
Window7幻灯片字体显示混乱,难道真的是病毒么
COCOS2DX 3.0 优化提升渲染速度 Auto-batching
iOS 打印出视图中全部的子视图的名称
【linux】学习2
【编程之美】2.16 求数组的最大递增子序列
【linux】学习1
【编程之美】2.15 子数组之和的最大值(二维)
【编程之美】2.14 求数组的子数组之和的最大值
【QT】视频播放
【编程之美】3.5 最短摘要的生成
原文地址:https://www.cnblogs.com/Random/p/730533.html
最新文章
Market Guide for AIOps Platforms
DCOS :私有云的物理基础架构管理引擎
Python 3.6 安装pip
vue中的methods、computed和watch
Vue style里面使用@import引入外部css, 作用域是全局的解决方案
Vue2.0父子组件间事件派发机制
工作中常见问题汇总及解决方案
vue单文件中引用路径的处理
vue-router query和params传参(接收参数)$router $route的区别
教你用webpack搭一个vue脚手架[超详细讲解和注释!]
热门文章
axios简单封装
vue-cli 打包 使用 history模式 的后端配置
angular.js和vue.js中实现函数去抖(debounce)
IP协议解读(三)
CountDownLatch使用方法
【机房重构】—上机&订餐
Leetcode: Triangle
有关文档碎片(document fragment)的使用方法
9.9递归和动态规划(四)——返回某集合的全部子集
【WaaCaa】一款开源科学作图/数据可视化工具 —— 诞生篇
Copyright © 2011-2022 走看看