} }
四、删除文件
在浏览信息的GridView数据控件中单击 ,即可删除相应的文件及文件夹。此操作是链接到浏览文件信息的页面本身(Main.aspx),通过传递type、sign和thedir 3个参数,其中type参数表示当前所要执行的操作,其值为delete、browser、down之一;sign=1表示删除的是文件,sign=0表示删除的是文件夹;thedir参数表示完整的文件名。
private void DeleteFileFolder(string fname, int sign)
{ switch (sign)
{case 1:{ System.IO.File.Delete(fname);break; }
case 0:{ System.IO.Directory.Delete(fname, true);break;}}
}
五、下载文件
在浏览信息的GridView数据控件中单击 ,即可下载相应的文件。此操作也是链接到浏览文件信息的页面本身(Main.aspx),通过传递参数type=down操作。
private void FileDownload(string FullFileName)
{ FileInfo DownloadFile = new FileInfo(FullFileName);
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
Response.WriteFile(DownloadFile.FullName);
Response.Flush();
Response.End();
}
六、上传文件
上传文件是用户操作网络硬盘的必备功能,都是通过File控件实现。此项目支持多文件上传,通过动态加载File控件实现。关键在于如何遍历页面上的File控件,通过Request.Files.Count可获取页面上的File控件的数量,然后调用HttpPostedFile类中的SaveAs方法完成上传,其界面如图2所示。
图2 上传文件界面
实现代码如下:
<script language="javascript" type="text/javascript">
function addFile()
{ var filebutton = '<br><input type="file" size="50" name="File" />';
document.getElementById('FileList').insertAdjacentHTML("beforeEnd",filebutton); }
</script>
……
<input type="button" value="增加上载文件" onclick="addFile()" />
……
protected void SureBtn_Click(object sender, EventArgs e)
{ string theDir = Request.QueryString["thedir"];
HttpFileCollection fileList = HttpContext.Current.Request.Files;
StringBuilder uploadMsg = new StringBuilder("上载的文件如下:" + "<br>");
try {
for (int i = 0; i < fileList.Count; i++)
{ HttpPostedFile hPostedFile = fileList[i];
string fileName = Path.GetFileName(hPostedFile.FileName);
if (fileName != null)
{ if(String.IsNullOrEmpty(Path.GetDirectoryName(theDir)))
hPostedFile.SaveAs(theDir + fileName); //上载文件
else
hPostedFile.SaveAs(theDir +@"/"+ fileName);
uploadMsg.Append("文件名称:" + fileName + "<br>");
} }
StatusMsg.Text = uploadMsg.ToString(); //显示上载文件的操作成功消息
}
catch (Exception ex)
{ StatusMsg.Text = ex.Message;//显示上载文件的操作失败消息 }
}
七、建立文件夹
在浏览文件信息的主页面中,单击“创建文件夹”链接,进入创建文件夹页面,如图3所示。
图3 创建文件夹界面
System.IO.Directory.CreateDirectory(thepath + foldername);
八、结语
通过此项目的实践,可以体会到要编写好程序代码实现相应的功能,应当对.NET的类库的了解和熟悉。从一定意义上讲,.NET早就给我们准备了丰富的类库功能,关键在于我们的发现和应用。同时,就此项目而言,只需稍加修改,就可作为网站的一个模块运用,使网站提供更多的服务。
|