在目录浏览中,如果选择了一个文件,点击“打开”按钮下载该文件。当然,也可以选择直接打开,如图1所示。
图1下载和在线打开界面点击“打开”按钮直接打开文件,点击“保存”按钮下载文件。代码实现单击“打开”按钮打开文件,因此应该在“打开”事件中判断所选文件是文件夹还是文件。所以对btnOpen_Click()事件进行了修改,下面重点是新增的代码:复制的代码如下:私有void btnopen _ click(对象发送者,系统。event args e){ if(file list . selecteditem . text=='返回父目录')//返回父目录{ string parent path=directory . getparent(current path))。tostring();LoAdDir(ParentPath);返回;} else if(file list . selecteditem . text . indexof(' . ')0)//打开文件{ file download(file list . selecteditem . text);} else //打开目录{ load dir(file list . selecteditem . text);}}如果选择了文件,则调用FileDownload()方法,代码部分如下:复制代码如下: private void file download(字符串完整文件名){ file info download file=new file info(您的文件名);//设置文件响应。清除()进行下载;//清除缓冲流中的所有内容并输出响应。ClearHeaders();//清除缓冲流响应中的所有标头。Buffer=false//将缓冲输出设置为false //将输出流的HTTP MIME类型设置为application/octet-stream response . content type=' application/octet-stream ';//将HTTP头添加到输出流response . appendheader(' content-disposition ',' attachmentfilename=' HttpUtility。UrlEncode(下载文件。全名,系统。text . encoding . utf8));回应。附录标题('内容-长度',下载文件。length . ToString());//将指定的文件直接写入HTTP内容输出流。回应。写文件(下载文件。全名);回应。flush();//发送所有当前缓冲输出响应。End()到客户端;//将当前缓冲的输出全部发送给客户端}该代码为输出流形式,用于文件传输,难以理解。如果以不同的方式处理,则很难向页面添加超链接控件。选择相应的文件时,将其链接到相应的路径。这里就不多说了。