Пример #1
0
        private void Process(HttpListenerContext context)
        {
            string requestedFile = context.Request.Url.AbsolutePath.Substring(1);

            if (string.IsNullOrEmpty(requestedFile))
            {
                //Index files time
                foreach (string fname in defaultFiles)
                {
                    if (File.Exists(Path.Combine(_directory, fname)))
                    {
                        requestedFile = fname;
                        break;
                    }
                }
            }

            requestedFile = Path.Combine(_directory, requestedFile);

            if (File.Exists(requestedFile))
            {
                try
                {
                    using (Stream filedata = new FileStream(requestedFile, FileMode.Open))
                    {
                        string mimetype;
                        MIME_TYPES.TryGetValue(Path.GetExtension(requestedFile), out mimetype);
                        if (string.IsNullOrEmpty(mimetype))
                        {
                            mimetype = HTML_RESPONSE_CONTENT_TYPE;                                                        //Default
                        }
                        context.Response.StatusCode      = (int)HttpStatusCode.OK;
                        context.Response.ContentLength64 = filedata.Length;
                        context.Response.ContentType     = mimetype;

                        byte[] buffer = new byte[1024 * 8];
                        int    byteCount;
                        while ((byteCount = filedata.Read(buffer, 0, buffer.Length)) > 0)
                        {
                            context.Response.OutputStream.Write(buffer, 0, byteCount);
                        }

                        context.Response.OutputStream.Flush();
                    }
                }

                catch (Exception ex)
                {
                    context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
                    UtilClass.WriteLine(ex);
                }
            }
            else
            {
                context.Response.StatusCode = (int)HttpStatusCode.NotFound;
            }
            context.Response.OutputStream.Close();
        }
Пример #2
0
        static string DetermineMimeTypeFromExtension(string filename)
        {
            var ext   = System.IO.Path.GetExtension(filename).ToLower();
            var match = MIME_TYPES.Where(o => o.Value.Contains(ext)).Select(o => o.Key).FirstOrDefault();

            if (match != null)
            {
                return(match);
            }
            return("application/octet-stream");            //default;
        }