/// <summary> /// 显示文件 /// </summary> /// <param name="filename"></param> private void ShowFile(string filename, string name, RequestInfo request, ResponseInfo response) { FileInfo finf = new FileInfo(filename); response.MimeType = WebCommon.GetContentType(finf.Extension.Trim('.')); string strName = RequestInfo.GetFileName(request, name); response.Header["Content-Disposition"] = "attachment;filename=" + strName; long len = finf.Length; response.Header["Accept-Ranges"] = "bytes"; response.Header["Content-Transfer-Encoding"] = "binary"; if (request.Header.ContainsKey("range")) //如果客户端指定了分段下载 { List <RangeInfo> lstRange = ResponseInfo.GetRange(request.Header["Range"], finf.Length); //处理区段信息 if (lstRange.Count > 0) { response.Header["Content-Range"] = "bytes " + lstRange[0].Start + "-" + lstRange[0].End + "/" + finf.Length;//指定区段 response.StatusCode = 206; } } try { response.UserTag = finf; response.Length = len; response.RangeLength = finf.Length; } catch (Exception ex) { response.Write("数据读取失败:" + ex.Message); } }
/// <summary> /// 输出页面 /// </summary> /// <param name="lstDirectory"></param> /// <param name="lstFiles"></param> private void PutPage(PageModelInfo pageInfo, ResponseInfo response) { string content = _model; content = content.Replace("<#=Root#>", pageInfo.CurLoaction); content = content.Replace("<#=DirectoryItems#>", GenDirectoryHtml(pageInfo.Directorys)); content = content.Replace("<#=FileItems#>", GenFileHtml(pageInfo.Files)); response.Write(content); }
void _server_OnRequestProcessing(RequestInfo request, ResponseInfo response) { if (request.RequestParam["act"] == "login") { response.Write(_pwdmodel); return; } //验证密码 if (!VerifiyPwd(request)) { ShowPwdError(request, response); return; } string url = request.Path; string fileName = null; bool isRoot = false; string curDir = GetDirectory(url, out fileName, out isRoot); if (fileName == "..") { DirectoryInfo dinfo = new DirectoryInfo(curDir); if (isRoot) { curDir = dinfo.FullName; } else { curDir = dinfo.Parent.FullName; } fileName = ""; } string strfname = HttpUtility.UrlDecode(fileName); if (string.IsNullOrEmpty(fileName) && string.Equals(request.RequestParam["type"], "lst", StringComparison.CurrentCultureIgnoreCase))//输出批量下载文件 { if (PutLst(curDir, request, response, url)) { return; } } else if (!string.IsNullOrEmpty(fileName))//输出文件 { string showFileName = curDir + strfname; ShowFile(showFileName, strfname, request, response); } else { if (PutPageTo(curDir, request, response, url)) { return; } } //response.Write("没有数据"); }
void sm_OnRequestProcessing(RequestInfo request, ResponseInfo response) { string url = request.Path; if (url.Equals("/desktop", StringComparison.CurrentCultureIgnoreCase)) { //response.MimeType = "image/jpeg"; string content = Resources.model.Replace("<%=url%>", request.Host.Trim()); content = content.Replace("<%=timeout%>", (1000 / ((int)nupFPS.Value)).ToString()); response.Write(content); return; } if (url.Equals("/getdesktop", StringComparison.CurrentCultureIgnoreCase)) { response.MimeType = "image/jpeg"; if (_cache.CurrentDesktop != null) { response.Write(_cache.CurrentDesktop); } return; } response.Write("没有数据"); }
/// <summary> /// 输出文件目录的下载列表 /// </summary> /// <param name="curDir"></param> /// <param name="request"></param> /// <param name="url"></param> /// <returns></returns> private bool PutLst(string curDir, RequestInfo request, ResponseInfo response, string url) { DirectoryInfo dinfo = new DirectoryInfo(curDir); if (dinfo.Exists) { string content = GetDictoryFiles(request, curDir, HttpUtility.HtmlDecode(url)); response.MimeType = WebCommon.GetContentType("*"); response.Header["Content-Disposition"] = "attachment;filename=" + HttpUtility.UrlEncode(dinfo.Name) + ".lst"; response.Header["Connection"] = "close"; response.Write(content); return(true); } return(false); }