コード例 #1
0
ファイル: WebServer.cs プロジェクト: taisandog/OtherSource
        /// <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);
            }
        }
コード例 #2
0
ファイル: WebServer.cs プロジェクト: taisandog/OtherSource
        /// <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);
        }
コード例 #3
0
ファイル: WebServer.cs プロジェクト: taisandog/OtherSource
        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("没有数据");
        }
コード例 #4
0
        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("没有数据");
        }
コード例 #5
0
ファイル: WebServer.cs プロジェクト: taisandog/OtherSource
        /// <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);
        }