Отображение содержимого объявления от Respose.WriteFile () / Response.ContentType

голоса
13

Как бы один отображать любую надстройку содержимое из «динамической» ASPX страницы? В настоящее время я работаю над использованием System.Web.HttpResponse «Page.Response», чтобы записать файл, который хранится на веб-сервере для веб-запроса.

Это позволит людям ударить URL к типу http://www.foo.com?Image=test.jpg и иметь дисплей изображения в браузере. Итак , как вы знаете , это вращается вокруг использования Response.ContentType.

Используя

Response.ContentType = application/octet-stream;

Я способен отображать изображения типа GIF / JPEG / PNG (все я испытал до сих пор), бит пытается отобразить .swf или .ico файлы дает мне хорошую маленькую ошибку.

с помощью

Response.ContentType = application/x-shockwave-flash;

Я могу получить флэш-файлы, чтобы играть, но изображения испорчены.

Так как же я легко выбрать ContentType?

Задан 06/08/2008 в 10:52
источник пользователем
На других языках...                            


4 ответов

голоса
8

Это некрасиво, но лучший способ это посмотреть на файл и установить тип содержимого в зависимости от обстоятельств:

switch ( fileExtension )
{
    case "pdf": Response.ContentType = "application/pdf"; break; 
    case "swf": Response.ContentType = "application/x-shockwave-flash"; break; 

    case "gif": Response.ContentType = "image/gif"; break; 
    case "jpeg": Response.ContentType = "image/jpg"; break; 
    case "jpg": Response.ContentType = "image/jpg"; break; 
    case "png": Response.ContentType = "image/png"; break; 

    case "mp4": Response.ContentType = "video/mp4"; break; 
    case "mpeg": Response.ContentType = "video/mpeg"; break; 
    case "mov": Response.ContentType = "video/quicktime"; break; 
    case "wmv":
    case "avi": Response.ContentType = "video/x-ms-wmv"; break; 

    //and so on          

    default: Response.ContentType = "application/octet-stream"; break; 
}
Ответил 18/08/2008 d 13:10
источник пользователем

голоса
0

Так как .Net 4.5 можно использовать

MimeMapping.GetMimeMapping

Она возвращает отображение MIME для указанного имени файла.

https://msdn.microsoft.com/en-us/library/system.web.mimemapping.getmimemapping(v=vs.110).aspx

Ответил 25/09/2017 d 19:47
источник пользователем

голоса
0

Да Кит некрасиво , но верно. Я в конечном итоге размещения типов MIME , которые мы могли бы использовать в базу данных , а затем вытащить их , когда я печатал файл. Я до сих пор не могу поверить , что нет autoritive списка типов там или что нет никакого упоминания о том , что доступно в MSDN.

Я нашел этот сайт , который обеспечил некоторую помощь.

Ответил 20/08/2008 d 06:42
источник пользователем

голоса
0

Это часть решения я использую в локальной сети. Некоторые из переменных, которые вы должны собрать себя, как я вытащить их из базы данных, но вы можете вытащить их из другого места.

Единственное дополнение , но у меня там есть функция называется getMimeType , который подключается к базе данных и отодвигается правильный тип шахты на основе расширения файла. Это по умолчанию приложения / октет-поток , если ничего не найдено.

// Clear the response buffer incase there is anything already in it.
Response.Clear();
Response.Buffer = true;

// Read the original file from disk
FileStream myFileStream = new FileStream(sPath, FileMode.Open);
long FileSize = myFileStream.Length;
byte[] Buffer = new byte[(int)FileSize];
myFileStream.Read(Buffer, 0, (int)FileSize);
myFileStream.Close();

// Tell the browse stuff about the file
Response.AddHeader("Content-Length", FileSize.ToString());
Response.AddHeader("Content-Disposition", "inline; filename=" + sFilename.Replace(" ","_"));
Response.ContentType = getMimeType(sExtention, oConnection);

// Send the data to the browser
Response.BinaryWrite(Buffer);
Response.End();
Ответил 06/08/2008 d 10:59
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more