温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:多用户文件上传管理程序源码
当前文件:
FileSystem/userfile.ascx.cs,打开代码结构图
FileSystem/userfile.ascx.cs,打开代码结构图1using System; 2
using System.Data; 3
using System.Configuration; 4
using System.Collections; 5
using System.Web; 6
using System.Web.Security; 7
using System.Web.UI; 8
using System.Web.UI.WebControls; 9
using System.Web.UI.WebControls.WebParts; 10
using System.Web.UI.HtmlControls; 11
using System.IO; 12
using System.Data.SqlClient; 13
14
public partial class userfile : System.Web.UI.UserControl 15
{ 16
string msgtext = "";//操作出错或时显示的变量 17
bool isvip = Roles.IsUserInRole("vip");//获取当前用户是不是可以匿名访问的用户 18
protected void Page_Load(object sender, EventArgs e) 19
{ 20
if (!IsPostBack) 21
{ 22
this.Panel1.Attributes.Add("style", "float:left");//诶,找不到设置float样式的地方,只能这样搞了 23
ViewState["username"]=Membership.GetUser().UserName; 24
ViewState["root"] = ViewState["rootpath"] = Server.MapPath("./" + this.DropDownList1.SelectedValue + "/" + ViewState["username"]);//得到当前用户默认的跟路径 25
this.Panel1.Visible = isvip;//是否可以使用VIP功能 26
bindgv();//只绑定一次,否则对文件操作后重新绑定时,对控件绑定两次将会报"回发或回调参数无效"的错误 27
} 28
} 29
//上传按钮的操作 30
protected void Buttonup_Click(object sender, EventArgs e) 31
{ 32
string fn = this.FileUpload1.FileName; 33
if (fn.Length < 1) this.msg.Text = "请选择文件后在上传"; 34
else 35
{ 36
bool bl = true;//默认标识:可以上传 37
string thiskzm = fn.Substring(fn.LastIndexOf('.'));//获取上传的文件扩展名 38
//说明各等级用户 不可以上传的文件类型 39
string[] vip = { "" }; 40
string[] user ={ ".php", ".aspx",".cs" }; 41
string[] kzms = isvip ? vip : user; 42
foreach (string kzm in kzms) 43
{ 44
if (thiskzm.Equals(kzm, StringComparison.OrdinalIgnoreCase)) 45
{ 46
bl = false; 47
break; 48
} 49
} 50
if (bl)//表示找到了与不合法的文件类型 51
{ 52
string fp = ViewState["rootpath"].ToString() + "/" + fn; 53
if (this.CheckBox1.Checked) 54
this.FileUpload1.SaveAs(fp); 55
else if (File.Exists(fp)) 56
msgtext = "有同名的文件存在"; 57
else this.FileUpload1.SaveAs(fp); 58
this.bindgv(); 59
} 60
else this.msg.Text = "上传的文件类型不正确"; 61
} 62
this.msg.Visible = this.msg.Text.Length > 1; 63
} 64
65
//实例化一个可供DataSet增加用的数据表,然后通过DataSet把数据绑定到GridView中显示 66
private void bindgv() 67
{ 68
if (!Directory.Exists(ViewState["rootpath"].ToString())) 69
Directory.CreateDirectory(ViewState["rootpath"].ToString()); 70
DirectoryInfo di = new DirectoryInfo(ViewState["rootpath"].ToString()); 71
DataTable DT = new DataTable(); 72
DT.Columns.Add("filename"); 73
DT.Columns.Add("filesize"); 74
DT.Columns.Add("writetime"); 75
DT.Columns.Add("fileurl"); 76
//Response.Write(DT.Columns.Count+"列"); 77
foreach (DirectoryInfo s in di.GetDirectories()) 78
{ 79
DT.Rows.Add(s.Name, "", gettime(s.LastWriteTime), ViewState["rootpath"].ToString() + s.Name); 80
} 81
foreach (FileInfo f in di.GetFiles())//将每条信息遍历到表里 82
{ 83
long length = 0; 84
length = f.Length;//计算文件大小,老是计算为0???... 85
DT.Rows.Add(f.Name, Convert.ToString(length)+"字节", gettime(f.LastWriteTime), ViewState["rootpath"].ToString()+"/"+f.Name); 86
} 87
//然后将表添加到内存数据库里, 绑定出来 88
DataSet ds = new DataSet(); 89
ds.Tables.Add(DT); 90
this.GridView1.DataKeyNames = new string[]{ "filename" }; 91
this.GridView1.DataSource = ds; 92
this.GridView1.DataBind(); 93
DT.Clear(); 94
if(msgtext=="") 95
msgtext += this.GridView1.Rows.Count < 1 ? "<br />没有任何文件和文件夹" : ""; 96
this.msg.Text = msgtext; 97
this.msg.Visible = msgtext != "" ? true : false; 98
} 99
private string gettime(DateTime sj) 100
{ 101
return sj.Year + "/" + sj.Month + "/" + sj.Day + " " + sj.Hour + ":" + sj.Minute; 102
} 103
104
//建立文件夹操作 105
protected void Button1_Click(object sender, EventArgs e) 106
{ 107
Directory.CreateDirectory(ViewState["rootpath"].ToString() + "/" + this.TextBox1.Text); 108
bindgv(); 109
} 110
111
//当点击了GridView1的删除操作 112
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) 113
{ 114
string path = ViewState["rootpath"].ToString() + "/" + this.GridView1.DataKeys[e.RowIndex].Value.ToString(); 115
if (Directory.Exists(path)) 116
if (Directory.GetDirectories(path).Length < 1 && Directory.GetFiles(path).Length < 1) 117
Directory.Delete(path); 118
else msgtext = "目录不是空的"; 119
else File.Delete(path); 120
bindgv(); 121
} 122
123
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 124
{ 125
this.GridView1.EditIndex = e.NewEditIndex; 126
bindgv(); 127
} 128
protected void LinkButton3_Click(object sender, EventArgs e) 129
{ 130
this.GridView1.EditIndex = -1; 131
bindgv(); 132
} 133
protected void save_Click(object sender, EventArgs e) 134
{ 135
string path1 = this.GridView1.DataKeys[this.GridView1.EditIndex].Value.ToString();//取得文件或路径原名 136
string path2 = ((TextBox)this.GridView1.Rows[this.GridView1.EditIndex].FindControl("TextBox2")).Text;//取得文件或路径修改后的名称 137
if (Directory.Exists(ViewState["rootpath"].ToString() + "/" + path1)) 138
Directory.Move(ViewState["rootpath"].ToString() + "/" + path1, ViewState["rootpath"].ToString() + "/" + path2); 139
else File.Move(ViewState["rootpath"].ToString() + "/" + path1, ViewState["rootpath"].ToString() + "/" + path2); 140
this.GridView1.EditIndex = -1; 141
bindgv(); 142
} 143
protected void LinkButton2_Command(object sender, CommandEventArgs e) 144
{ 145
string path = ViewState["rootpath"].ToString() + "/" + e.CommandArgument.ToString(); 146
if (Directory.Exists(path)) ViewState["rootpath"] = path; 147
bindgv(); 148
} 149
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 150
{ 151
ViewState["root"] = ViewState["rootpath"] = Server.MapPath("./" + this.DropDownList1.SelectedValue + "/" + ViewState["username"]); 152
bindgv(); 153
} 154
protected void ImageButton1_Click(object sender, ImageClickEventArgs e) 155
{ 156
if (ViewState["root"].ToString() != ViewState["rootpath"].ToString()) 157
{ 158
string pathstr = ViewState["rootpath"].ToString(); 159
ViewState["rootpath"] = Directory.GetParent(ViewState["rootpath"].ToString());//Path.GetDirectoryName(ViewState["rootpath"].ToString()); 160
bindgv(); 161
} 162
else 163
{ 164
msgtext = "目前位置是根目录"; 165
this.msg.Text = msgtext; 166
this.msg.Visible = true; 167
} 168
//Response.Write(" r o ot路径是:" + ViewState["root"].ToString() + "<br /> rootpath路径是" + ViewState["rootpath"].ToString() + "<br />"); 169
} 170
171
//组建文件路径信息,这步有点麻烦.不过细心点就行 172
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 173
{ 174
string fname=""; 175
if (e.Row.RowType == DataControlRowType.DataRow) 176
{ 177
try 178
{ 179
fname = ((LinkButton)e.Row.FindControl("LinkButton2")).CommandArgument.ToString(); 180
} 181
catch (Exception) 182
{ 183
fname = ((TextBox)e.Row.FindControl("TextBox2")).Text; 184
} 185
HyperLink hl = ((HyperLink)e.Row.FindControl("HyperLink1")); 186
HyperLink bj = ((HyperLink)e.Row.FindControl("bianji")); 187
LinkButton lb = ((LinkButton)e.Row.FindControl("LinkButton2")); 188
string path = ViewState["rootpath"].ToString() + "/" + fname; 189
if (Directory.Exists(path)) 190
{ 191
hl.Text = ""; 192
lb.Text = fname; 193
bj.Text = ""; 194
} 195
else 196
{ 197
string url = Request.Url.AbsoluteUri; 198
url = url.Replace("admin.aspx", ""); 199
hl.Target = "_blank"; 200
int wz = path.IndexOf("public"); 201
if (wz == -1) wz = path.IndexOf("private"); 202
path = path.Replace("\\", "/"); 203
string urlpath = path.Substring(wz); 204
hl.NavigateUrl = url + urlpath; 205
bj.NavigateUrl = "edit.aspx?" +urlpath; 206
bj.Target = "_blank"; 207
lb.Text = ""; 208
} 209
} 210
} 211
protected void Button2_Click(object sender, EventArgs e) 212
{ 213
StreamWriter sw = File.CreateText(ViewState["rootpath"].ToString() + "\\" + this.filename.Text); 214
sw.Close();//必须先关闭才可编辑 215
bindgv(); 216
this.msgtext = "文件创建成功"; 217
} 218
} 219






}