Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / как сформировать response для открытия файла с любым расширением? / 6 сообщений из 6, страница 1 из 1
30.08.2006, 14:26
    #33952497
aspman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сформировать response для открытия файла с любым расширением?
Знаю имя файла, проверяю, имеет ли юзер доступ к нему и после этого открываю соответствующим образом файл. Но

Обычно, когда юзер щелкает по ссылке, эксплорер определяет расширение и соответственно отображает файл (изображение, текст) или предлагает пользователю открыть или сохранить его (архив, файлы MS Word и т.п.).

Как сделать то же самое, только программно (т.е. по имени файла).
...
Рейтинг: 0 / 0
30.08.2006, 15:01
    #33952654
puhh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сформировать response для открытия файла с любым расширением?
Поищите по Response.ContentType
Они бывают например:
"application/vnd.ms-excel"
"application/vnd.ms-word"
"image/gif"
"image/JPEG"
"text/plain"
"application/x-cdf"
"application/pdf"

Ну и куча других...
...
Рейтинг: 0 / 0
30.08.2006, 15:42
    #33952867
aspman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сформировать response для открытия файла с любым расширением?
придется, значит, ручками все делать



Known MIME Types

Hard-coded tests exist for the following MIME types that currently exist in URL Moniker.

text/richtext 
text/html 
audio/x-aiff 
audio/basic 
audio/wav 
image/gif 
image/jpeg 
image/pjpeg 
image/tiff 
image/x-png 
image/x-xbitmap 
image/bmp 
image/x-jg 
image/x-emf 
image/x-wmf 
video/avi 
video/mpeg 
application/postscript 
application/base64 
application/macbinhex40 
application/pdf 
application/x-compressed 
application/x-zip-compressed 
application/x-gzip-compressed 
application/java 
application/x-msdownload
...
Рейтинг: 0 / 0
30.08.2006, 16:52
    #33953215
aspman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сформировать response для открытия файла с любым расширением?
Поищите по Response.ContentType
Они бывают например:
"application/vnd.ms-excel"
"application/vnd.ms-word"
"image/gif"
"image/JPEG"
"text/plain"
"application/x-cdf"
"application/pdf"

Ну и куча других...
Просто ситуация такая, что заранее расширение неизвестно - файл может быть какого угодно формата
Если бы вот был ContentType, при котором эксплорер действовал аналогично тому, как при щелчке по ссылке... или функция что-ли, которая по имени файла возвращала бы этот ContentType для него
...
Рейтинг: 0 / 0
31.08.2006, 17:27
    #33956354
aspman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сформировать response для открытия файла с любым расширением?
В обчем получилось, что нужно было

Если вдруг кому интересно будет, то вот он
кот

        public static void ShowFileInResponse(HttpResponse response, string filepath, string url)
        {
            // files with image - open at once
            if (DeltaVec.Main.DVImage.IsImageFile(filepath))
                ShowImageFileInResponse(response, filepath);
            else
            {
                // other files - offer open or save
                //ShowTextFileInResponse(response, filepath);
                response.Clear();
                response.ContentType = "application/octet-stream";

                string filename = Path.GetFileName(filepath);
                //byte[] bytes = HttpContext.Current.Request.ContentEncoding.GetBytes(filename);
                // для FireFox - иначе не откроет файл с пробелом в имени
                string encodedname = System.Web.HttpUtility.UrlEncode(filename);
                response.AddHeader("Content-Disposition", "attachment; filename=" + encodedname);

                response.TransmitFile(filepath);
                response.Flush();
            }
        }

        public static void ShowImageFileInResponse(HttpResponse response, string filepath)
        {
            response.Clear();
            try
            {
                // make bitmap
                if (!System.IO.File.Exists(filepath))
                    throw new FileNotFoundException();
                Bitmap bm = new Bitmap(filepath);
                
                // define image format
                ImageFormat imgFormat = ImageFormat.Jpeg;
                string ext = Path.GetExtension(filepath);
                switch (ext.ToLower())
                {
                    case ".gif": imgFormat = ImageFormat.Gif; break;
                    case ".jpg":
                    case ".jpeg": imgFormat = ImageFormat.Jpeg; break;
                    case ".png": imgFormat = ImageFormat.Png; break;
                    case ".bmp": imgFormat = ImageFormat.Bmp; break;
                }
                // save bitmap to stream
                bm.Save(response.OutputStream, imgFormat);
            }
            catch (FileNotFoundException)
            {
                response.Write(string.Format(@"File ""{0}"" not found", filepath));
            }
        }
...
Рейтинг: 0 / 0
31.08.2006, 17:40
    #33956430
aspman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как сформировать response для открытия файла с любым расширением?
ой, там в последней функции еще надо добавить такое


                response.ContentType = "image/jpeg";
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / как сформировать response для открытия файла с любым расширением? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]