zoukankan
html css js c++ java
8.6.2 网络文件夹
Web.config代码
<?
xml version="1.0"
?>
<
configuration
>
<
appSettings
>
<
add
key
="FileUploadPath"
value
="Upload/"
/>
<
add
key
="FileTypeLimit"
value
=".zip,.rar,.doc,.ppt,.txt,.mp3"
/>
<!--
FileSizeLimit和FolderSizeLimit以KB为单位
-->
<
add
key
="FileSizeLimit"
value
="10240"
/>
<
add
key
="FolderSizeLimit"
value
="10240"
/>
</
appSettings
>
<
connectionStrings
/>
<
system.web
>
<!--
每次请求最大长度40M,页面执行最长时间60秒
-->
<
httpRuntime
maxRequestLength
="40960"
executionTimeout
="60"
/>
<
compilation
debug
="true"
/>
<
authentication
mode
="Windows"
/>
</
system.web
>
</
configuration
>
页面代码
<%
@ Page Language
=
"
C#
"
AutoEventWireup
=
"
true
"
CodeFile
=
"
Default7.aspx.cs
"
Inherits
=
"
Chapter86_Default7
"
%>
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
<
head
runat
="server"
>
<
title
>
网络文件夹
</
title
>
<
style
type
="text/css"
>
/**/
/*
给body、input和select元素同时应用css
*/
body,input,select
{
}
{
font-family
:
"宋体"
;
font-size
:
10pt
;
font-weight
:
normal
;
color
:
#000000
;
}
</
style
>
</
head
>
<
body
>
<
form
id
="form1"
runat
="server"
>
<
div
>
<!--
启用了AutoPostBack
-->
<
asp:DropDownList
ID
="ddl_FunctionList"
runat
="server"
AutoPostBack
="True"
OnSelectedIndexChanged
="ddl_FunctionList_SelectedIndexChanged"
>
<
asp:ListItem
Value
="-1"
>
选择功能
</
asp:ListItem
>
<
asp:ListItem
Value
="0"
>
上传限制
</
asp:ListItem
>
<
asp:ListItem
Value
="1"
>
上传文件
</
asp:ListItem
>
<
asp:ListItem
Value
="2"
>
管理文件
</
asp:ListItem
>
</
asp:DropDownList
>
<
asp:Label
ID
="lab_FolderInfo"
runat
="server"
></
asp:Label
><
br
/>
<
br
/>
<
asp:MultiView
ID
="mvFolder"
runat
="server"
>
<!--
上传限制界面开始
-->
<
asp:View
ID
="view_Configure"
runat
="server"
>
允许上传文件的类型:
<
asp:BulletedList
ID
="bl_FileTypeLimit"
runat
="server"
>
</
asp:BulletedList
>
允许上传单个文件的大小:
<
asp:Label
ID
="lab_FileSizeLimit"
runat
="server"
Text
=""
></
asp:Label
>
</
asp:View
>
<!--
上传文件界面开始
-->
<
asp:View
ID
="view_Upload"
runat
="server"
>
<
asp:FileUpload
ID
="FileUpload"
runat
="server"
Width
="400px"
/>
<
br
/>
<
asp:Button
ID
="btn_Upload"
runat
="server"
Text
="上传文件"
OnClick
="btn_Upload_Click"
/>
</
asp:View
>
<!--
管理文件界面开始
-->
<
asp:View
ID
="view_Manage"
runat
="server"
>
<
table
cellpadding
="5"
cellspacing
="0"
border
="0"
>
<
tr
>
<
td
>
<!--
启用了AutoPostBack
-->
<
asp:ListBox
ID
="lb_FileList"
runat
="server"
AutoPostBack
="True"
Width
="300px"
Height
="300px"
OnSelectedIndexChanged
="lb_FileList_SelectedIndexChanged"
></
asp:ListBox
>
</
td
>
<
td
valign
="top"
>
<
asp:Label
ID
="lab_FileDescription"
runat
="server"
Text
=""
></
asp:Label
>
</
td
>
</
tr
>
</
table
>
<
asp:Button
ID
="btn_Download"
runat
="server"
Text
="下载文件"
OnClick
="btn_Download_Click"
/>
<!--
在删除前给予确认
-->
<
asp:Button
ID
="btn_Delete"
runat
="server"
Text
="删除文件"
OnClientClick
="return confirm('确定删除文件吗?')"
OnClick
="btn_Delete_Click"
/><
br
/>
<
asp:TextBox
ID
="tb_FileNewName"
runat
="server"
Width
="300px"
></
asp:TextBox
>
<
asp:Button
ID
="btn_Rename"
runat
="server"
Text
="对文件重命名"
OnClick
="btn_Rename_Click"
/>
</
asp:View
>
</
asp:MultiView
>
</
div
>
</
form
>
</
body
>
</
html
>
.cs代码
using
System;
using
System.Data;
using
System.Configuration;
using
System.Web;
using
System.Web.Security;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Web.UI.WebControls.WebParts;
using
System.Web.UI.HtmlControls;
using
System.IO;
public
partial
class
Chapter86_Default7 : System.Web.UI.Page
{
protected
void
Page_Load(
object
sender, EventArgs e)
{
//
防止PostBack后列表信息重复添加
if
(
!
IsPostBack)
{
//
初始化文件夹信息
InitFolderInfo();
//
初始化上传限制信息
InitUploadLimit();
//
初始化文件列表
InitFileList();
}
}
protected
void
ddl_FunctionList_SelectedIndexChanged(
object
sender, EventArgs e)
{
//
根据下拉框所选调用合适的页面
mvFolder.ActiveViewIndex
=
Convert.ToInt16(ddl_FunctionList.SelectedValue);
}
protected
void
btn_Upload_Click(
object
sender, EventArgs e)
{
//
判断用户是否选择了文件
if
(FileUpload.HasFile)
{
//
调用自定义方法判断文件类型是否符合要求
if
(IsAllowableFileType())
{
//
调用自定义方法判断文件大小是否符合要求
if
(IsAllowableFileSize())
{
//
从config中读取文件上传路径
string
strFileUploadPath
=
ConfigurationManager.AppSettings[
"
FileUploadPath
"
].ToString();
//
从UploadFile中读取文件名
string
strFileName
=
FileUpload.FileName;
//
组合成物理路径
string
strFilePhysicalPath
=
Server.MapPath(strFileUploadPath
+
strFileName);
//
保存文件
FileUpload.SaveAs(strFilePhysicalPath);
//
更新文件列表框控件
lb_FileList.Items.Add(strFileName);
//
更新文件夹信息
InitFolderInfo();
//
调用自定义方法显示提示
ShowMessageBox(
"
文件成功上传
"
);
}
else
{
//
调用自定义方法显示提示
ShowMessageBox(
"
文件大小不符合要求,请参看上传限制
"
);
}
}
else
{
//
调用自定义方法显示提示
ShowMessageBox(
"
文件类型不符合要求,请参看上传限制
"
);
}
}
else
{
//
调用自定义方法显示提示
ShowMessageBox(
"
请选择一个文件
"
);
}
}
protected
void
btn_Download_Click(
object
sender, EventArgs e)
{
//
从config中读取文件上传路径
string
strFileUploadPath
=
ConfigurationManager.AppSettings[
"
FileUploadPath
"
].ToString();
//
从列表框控件中读取选择的文件名
string
strFileName
=
lb_FileList.SelectedValue;
//
组合成物理路径
string
strFilePhysicalPath
=
Server.MapPath(strFileUploadPath
+
strFileName);
Response.Clear();
Response.ContentType
=
"
application/octet-stream
"
;
Response.AddHeader(
"
Content-Disposition
"
,
"
attachment;FileName=
"
+
HttpUtility.UrlEncode(strFileName, System.Text.Encoding.UTF8));
Response.WriteFile(strFilePhysicalPath);
Response.End();
}
protected
void
btn_Delete_Click(
object
sender, EventArgs e)
{
//
从config中读取文件上传路径
string
strFileUploadPath
=
ConfigurationManager.AppSettings[
"
FileUploadPath
"
].ToString();
//
从列表框控件中读取选择的文件名
string
strFileName
=
lb_FileList.SelectedValue;
//
组合成物理路径
string
strFilePhysicalPath
=
Server.MapPath(strFileUploadPath
+
strFileName);
//
删除文件
System.IO.File.Delete(strFilePhysicalPath);
//
更新文件列表框控件
lb_FileList.Items.Remove(lb_FileList.Items.FindByText(strFileName));
//
更新文件夹信息
InitFolderInfo();
//
更新文件描述信息
tb_FileNewName.Text
=
""
;
//
更新重命名文本框
lab_FileDescription.Text
=
""
;
//
调用自定义方法显示提示
ShowMessageBox(
"
文件成功删除
"
);
}
protected
void
btn_Rename_Click(
object
sender, EventArgs e)
{
//
从config中读取文件上传路径
string
strFileUploadPath
=
ConfigurationManager.AppSettings[
"
FileUploadPath
"
].ToString();
//
从列表框控件中读取选择的文件名
string
strFileName
=
lb_FileList.SelectedValue;
//
从重命名文本框中读取新文件名
string
strFileNewName
=
tb_FileNewName.Text;
//
组合成物理路径
string
strFilePhysicalPath
=
Server.MapPath(strFileUploadPath
+
strFileName);
//
组合成物理路径
string
strFileNewPhysicalPath
=
Server.MapPath(strFileUploadPath
+
strFileNewName);
//
文件重命名
System.IO.File.Move(strFilePhysicalPath, strFileNewPhysicalPath);
//
找到文件列表框控件中的匹配项
ListItem li
=
lb_FileList.Items.FindByText(strFileName);
//
修改文字
li.Text
=
strFileNewName;
//
修改值
li.Value
=
strFileNewName;
//
调用自定义方法显示提示
ShowMessageBox(
"
文件成功重命名
"
);
}
protected
void
lb_FileList_SelectedIndexChanged(
object
sender, EventArgs e)
{
//
从config中读取文件上传路径
string
strFileUploadPath
=
ConfigurationManager.AppSettings[
"
FileUploadPath
"
].ToString();
//
从列表框控件中读取选择的文件名
string
strFileName
=
lb_FileList.SelectedValue;
//
组合成物理路径
string
strFilePhysicalPath
=
Server.MapPath(strFileUploadPath
+
strFileName);
//
根据物理路径实例化文件信息类
FileInfo fi
=
new
FileInfo(strFilePhysicalPath);
//
获得文件大小和创建时间并赋值给标签
lab_FileDescription.Text
=
string
.Format(
"
文件大小:{0} 字节<br><br>上传时间:{1}<br>
"
, fi.Length, fi.CreationTime);
//
把文件名赋值给重命名文本框
tb_FileNewName.Text
=
strFileName;
}
private
void
InitFolderInfo()
{
//
从config中读取文件上传路径
string
strFileUploadPath
=
ConfigurationManager.AppSettings[
"
FileUploadPath
"
].ToString();
//
判断上传文件夹是否存在
if
(
!
Directory.Exists(Server.MapPath(strFileUploadPath)))
Directory.CreateDirectory(Server.MapPath(strFileUploadPath));
//
组合成物理路径
string
strFilePath
=
Server.MapPath(strFileUploadPath);
//
从config中读取文件夹容量限制
double
iFolderSizeLimit
=
Convert.ToInt32(ConfigurationManager.AppSettings[
"
FolderSizeLimit
"
]);
//
声明表示文件夹已用空间的变量
double
iFolderCurrentSize
=
0
;
//
获取文件夹中所有文件
FileInfo[] arrFiles
=
new
DirectoryInfo(strFilePath).GetFiles();
//
累加文件大小获得已用空间值
foreach
(FileInfo fi
in
arrFiles)
iFolderCurrentSize
+=
Convert.ToInt32(fi.Length
/
1024
);
//
把文件夹容量和已用空间信息赋值给标签
lab_FolderInfo.Text
=
string
.Format(
"
文件夹容量限制:{0} M 已用空间:{1:f2} M
"
, iFolderSizeLimit
/
1024
, iFolderCurrentSize
/
1024
);
}
private
void
InitUploadLimit()
{
//
从config中读取上传文件类型限制并根据逗号分割成字符串数组
string
[] arrFileTypeLimit
=
ConfigurationManager.AppSettings[
"
FileTypeLimit
"
].ToString().Split(
'
,
'
);
//
从config中读取上传文件大小限制
double
iFileSizeLimit
=
Convert.ToInt32(ConfigurationManager.AppSettings[
"
FileSizeLimit
"
]);
//
遍历字符串数组把所有项加入项目编号控件
for
(
int
i
=
0
; i
<
arrFileTypeLimit.Length; i
++
)
bl_FileTypeLimit.Items.Add(arrFileTypeLimit[i].ToString());
//
把文件大小限制赋值给标签
lab_FileSizeLimit.Text
=
string
.Format(
"
{0:f2} M
"
, iFileSizeLimit
/
1024
);
}
private
void
InitFileList()
{
//
从config中读取文件上传路径
string
strFileUploadPath
=
ConfigurationManager.AppSettings[
"
FileUploadPath
"
].ToString();
//
组合成物理路径
string
strFilePath
=
Server.MapPath(strFileUploadPath);
//
读取文件夹下所有文件
FileInfo[] arrFiles
=
new
DirectoryInfo(strFilePath).GetFiles();
//
把文件名逐一添加到列表框控件控件
foreach
(FileInfo fi
in
arrFiles)
lb_FileList.Items.Add(fi.Name);
}
private
bool
IsAllowableFileSize()
{
//
从config中读取上传文件大小限制
double
iFileSizeLimit
=
Convert.ToInt32(ConfigurationManager.AppSettings[
"
FileSizeLimit
"
])
*
1024
;
//
文件大小是否超出了大小限制?
if
(iFileSizeLimit
>
FileUpload.PostedFile.ContentLength)
return
true
;
else
return
false
;
}
private
bool
IsAllowableFileType()
{
//
从config中读取上传文件类型限制
string
strFileTypeLimit
=
ConfigurationManager.AppSettings[
"
FileTypeLimit
"
].ToString();
//
当前文件扩展名是否能在这个字符串中找到?
if
(strFileTypeLimit.IndexOf(Path.GetExtension(FileUpload.FileName).ToLower())
>
-
1
)
return
true
;
else
return
false
;
}
private
void
ShowMessageBox(
string
strMessaage)
{
ClientScript.RegisterStartupScript(
this
.GetType(),
""
,
string
.Format(
"
<script>alert('{0}')</script>
"
, strMessaage));
}
}
查看全文
相关阅读:
通过反射实现IOC功能
数据访问模式之Repository模式
.NET自带IOC容器MEF之初体验
权限管理系统进入关键的开发阶段
待销售分拣单App数据推送
做一个自己的权限管理系统
linux tar 命令 --致力于“一眼看懂,随手就用”的随笔
python 简单实现文件拷贝
实验比较python中的range和xrange
安装 chardet ,出现ImportError: No module named setuptools
原文地址:https://www.cnblogs.com/0754ydj/p/1255191.html
最新文章
(转)SQL中的循环、for循环、游标
HL7工具安装步骤
常见的正则表达式
vue 全局插槽 全局插座
vue:简单方法替代vuex或者bus
vue 自定义组件 v-model双向绑定、 父子组件同步通信
webpack 构建简单的vue项目
async await promise
node 使用koa2 异步读文件
vue2 watch引用类型 失败原因
热门文章
vue2 3d 切换器
element-ui+vuex共享自定义方法进行表单验证 validator
vuex 基本用法、兄弟组件通信,参数传递
基于easyui与MVC的前端界面
Knockout简单用法
使用InstallUtil发布windows服务
通过证书请求Https站点
webAPI 自动生成帮助文档
扩展方法IEnumerable<T>转换为IList<SelectListItem> ,提供@Html.DropDownList使用
网站常见攻击与防御汇总
Copyright © 2011-2022 走看看