Как редиректить пользователя со страницы без яваскрипта

Я очень молодой Web-программист, ранее был прикладником и писал на делфи и юзал интербейс, окончив учебное заведение пошел устраиваться на работу, и т.к. знал я не много, то готов был пойти работать куда угодно.

И однажды я пришел в компанию YYY (надоели иксы), компания занималась разработкой сайтов, и т.к. я немного владел рнр и был знаком с HTML, + неплохие знания SQL я прошел собеседование (хотя нифига первый месяц не работал, а тупо учился :) ).

Яваскрипт вовсе не знал и не признавал, и заканчивая первый проект зашла чеь об улучшении качества обрабатывания ошибок (мну тупо делал die, это зло - не делайте так), пусть в .NET и можно центрировано логировать все что угодно, а вот в рнр - нет.

И было мне приказано сделать страницу с ошибкой - "Произошла ошибка", и через 5 секунд после загрузки страница должна была редиректить на главную, мне сказали сделать яваскриптом! ну я и сделал setTimeOut, но готов был поспорить (и спорил!), что можно тупо средствами HTML сделать, но на до мной все посмеялись и на том все забылось.

Прошло некоторое время, а точнее 2 года, как с HTML редиректить страницу я не знаю, да и не стремился узнать, т.к. можно Lcation в Header передовать, можно window.location.href менять.

И вот купил я себе хостинг обыкновенный, и поднял там приложение, и не заработало у меня приложение, а редиректило на сайт хостера, и забыл я убрать там index.html, и написан там был редирект, и написан был не по javascript-овому, - а по HTML-льному, и написано было нормально и понятно с первого раза:

<META HTTP-EQUIV="Refresh" CONTENT="5; URL=coppermine/">

где 5 - время в секундах, по истечении коего нужно редиректить

а если указать без URL, то страница будет тупо перезагружаться (оч полезно для онлайн-чатов):

<META HTTP-EQUIV="Refresh" CONTENT="5">

Динамическое добавление метатегов на страницу

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

Можно метатеги добавлять динамически вот так:

HtmlMeta meta = new HtmlMeta();
meta.Name = "description";
meta.Content = "test metatags";
head.Controls.Add(meta);

Быстрое объединение javascript файлов в один при помощи ScriptManager

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

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

Пример подцепления скриптов на ScriptManager

19 <asp:ScriptManager ID="ScriptManager1" runat="server" EnableViewState="true" EnableScriptGlobalization="false" ScriptMode="Release" CompositeScript-ScriptMode="Release">

20 <CompositeScript>

21 <Scripts>

22 <asp:ScriptReference Path="~/Scripts/script.js" />

23 <asp:ScriptReference Path="~/Scripts/shadowbox.js" />

24 <asp:ScriptReference Path="~/Scripts/languages/shadowbox-ru.js" />

25 <asp:ScriptReference Path="~/Scripts/libraries/sizzle/sizzle.js" />

26 <asp:ScriptReference Path="~/Scripts/players/shadowbox-html.js" />

27 <asp:ScriptReference Path="~/Scripts/players/shadowbox-img.js" />

28 <asp:ScriptReference Path="~/Scripts/players/shadowbox-iframe.js" />

29 <asp:ScriptReference Path="~/Scripts/libraries/swfobject/swfobject.js" />

30 </Scripts>

31 </CompositeScript>

32 </asp:ScriptManager>

И эти файлы в указанном порядке подцепятся - один за другим.
можно и программно подцеплять скрипты:

31 public void AddScript(string scriptFile)

32 {

33 ScriptManager1.CompositeScript.Scripts.Add(new ScriptReference() { Path = "~" + scriptFile });

34 }


Не стоит заботиться о дубликатах (например 2 контрола страницы возьмут и добавят один и тото же скрипт на страницу), ScriptManager подгружает скрипты 1 раз.
Думаю резонно все яваскрипты выносить в js файлы, а на страницах/контролах уже добавлять эти яваскрипты вот так:

33 ScriptManager.GetCurrent(Page).CompositeScript.Scripts.Add(new ScriptReference() { Path = "~" + scriptFile });

Это реально помогает, если на сайте много яваскриптов, так на своем проекте я снизил скорость загрузки яваскриптов с 7-ми до 1.02 секунд (проверяю в файрбаге)

Как сохранить элементы DropDownList на DataBind()

Все просто - установить в true св-во AppendDataBoundItems, вот пример:

1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

2

3 <html>

4 <head runat="server"></head>

5 <body>

6

7 <script runat="server">

8 protected void Page_Load(object sender, EventArgs e)

9 {

10 if (!IsPostBack)

11 {

12 ddl.DataSource = new string[] { "1", "2", "3", "4" };

13 ddl.DataBind();

14 }

15 }

16 </script>

17

18 <form id="form1" runat="server">

19

20 <asp:DropDownList runat="server" AppendDataBoundItems="true" ID="ddl" AutoPostBack="true">

21 <asp:ListItem>выберите число</asp:ListItem>

22 </asp:DropDownList>

23

24 </form>

25

26 </body>

27 </html>s

Конвертирование VB в C# / Convert VB to C#

Довольно часто лазаю по msdn и иным ресурсам в поисках какого нить мана, и, к великому сожалению, бывает что код представлен только на Visual Basic (VB). прочесть конечно можно, но иной раз тупо не понятны конструкции или код слишком велик, чтобы сидеть и разбирать его на чужом языке. Поэтому погуглив наткнулся на страничку сайта http://www.developerfusion.com/tools/convert/vb-to-csharp/ где можно конвертить код VB в C#

А если понадобится скачать проект на VB и конвертнуть его в C#, то советую бесплатную студию SharpDevelop, весит менее 20 мб, языки: c#, vb, f#, boo и умеет конвертить код в тот или иной язык!

Как обратиться к текущему ScriptManager

возможно боян, но все же: ScriptManager.GetCurrent(Page) - возвращает текущий ScriptManager страницы

пример использования:
ScriptManager.GetCurrent(Page).RegisterPostBackControl(btnLoadPhoto);

Как скачать страницу сайта или - как скачать сайт

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

И вот - придя домой я вспомнил про один интересный класс - WebClient, странно, и почему сразу его не заюзал, наверное потому, никогда и не юзал.

И так, расположен класс в namespace System.Net, вот пример скачивания сайта:

string str = new WebClient().DownloadString(http://bing.com/);


после выполнения такого кода в строке будет html ответ от сервера, все просто, очень просто :)

ниже приведен пример хендлера (накатал в дороге, по пути на работу), скачивает и выдает html c bing.com, а также асинхронно качает страницы гугла и бинга и кладет их в папку на диске c:\mysiteindex\

Также я описал полезную функцию для смены кодировки у строки, проше смотреть весь код целиком:


    1 <%@ WebHandler Language="C#" Class="Handler" %>
    2 
    3 using System;
    4 using System.Web;
    5 using System.Collections.Generic;
    6 using System.Text;
    7 using System.Net;
    8 
    9 public class Handler : IHttpHandler {
   10 
   11     public void ProcessRequest (HttpContext context)
   12     {
   13         // пример синхронного скачивания сайта 
   14         string str = new WebClient().DownloadString(http://bing.com/);
   15         context.Response.Write(Encode(str, Encoding.Default, Encoding.UTF8));
   16         /////////////////////////////////////
   17 
   18         ///страницы, которые будем скачивать
   19         List<string> pages = new List<string>
   20                 (
   21                     new string[]
   22                         {
   25                         }
   26                 );
   27 
   28         /// ниже асинхронное скачивание
   29         foreach (string page in pages)
   30         {
   31             WebClient wc = new WebClient();
   32 
   33             wc.DownloadStringAsync(new Uri(page)); // маленькое неудобство
   34             wc.BaseAddress = page;
   35 
   36             // эта функция вызовется после скачивания, при этом - пользователь уже получит ответ от хендлера, тем и полезна асинхронность :)
   37             wc.DownloadStringCompleted += (client, data) =>
   38                 {
   39                     // куда сохранять
   40                     string saveTo = @"c:\mysiteindex\" + (client as WebClient).BaseAddress.Replace("/", "_").Replace(":", "!") + ".html";
   41 
   42                     // записываем результат с проверкой кодировки
   43                     if ((client as WebClient).ResponseHeaders.Get("content-type").Contains("utf-8"))
   44                         System.IO.File.WriteAllText(saveTo, Encode(data.Result, Encoding.Default, Encoding.UTF8), Encoding.UTF8);
   45                     else
   46                         System.IO.File.WriteAllText(saveTo, data.Result, Encoding.UTF8);
   47                 };
   48         }
   49     }
   50 
   51     /// <summary>
   52     /// функция меняющая  кодировку строки
   53     /// </summary>
   54     private string Encode(string source, System.Text.Encoding from, System.Text.Encoding to)
   55     {
   56         byte[] encodedsource = from.GetBytes(source);
   57         return to.GetString(encodedsource);
   58     }
   59 
   60     /// <summary>
   61     /// Ерунда какая-то
   62     /// </summary>
   63     public bool IsReusable {
   64         get {
   65             return false;
   66         }
   67     }
   68 
   69 }
на 15-й строке - вывожу результат скачивания бинга
19-я - объявляю список адресов страниц, которые нужно скачать
29-я - бегаю по списку адресов страниц
31-я - создаю веб-клиент
33-я - сообщаю классу - какой адрес выкачивать
34-я - запоминаю в BaseAddress - какой адрес качаю (скорее не для этого нужно юзать, но незапречается, и внутри класса не юзается)
37-я - добавляю обработчик на завершение скачивания
40-я - определяю - куда буду сохранять полученную информацию
43-я - проверяю кодировку и сохраняю так, чтобы сохранились русские символы
по завершении скачивания, функция в 37-й строке вызовется автоматически, прошу заметить, что я не создавал отдельный обработчик, а заюзал лямбда выражение

Как установить shadowbox

Последнее время часто спрашивают по поводу установки и юзания шадоубокса, в итоге я решил написать маленькую статью.

во первых: скачайте shadowbox с официального сайта http://www.shadowbox-js.com/ и почитайте мануалы там

далее необходимо его добавить в нужный сайт

затем по порядку:
1. добавить нужные файлы на страницу сайта:
<link href="Scripts/shadowbox.css" rel="stylesheet" type="text/css" />

<script src="Scripts/shadowbox.js" type="text/javascript"></script>


2. для корректной работы shadowbox необходим doctype:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


3. инициализация shadowbox:

181 <script type="text/javascript">

182 Shadowbox.init({

183 language: "ru",

184 players: ["html", "img", "iframe", "swf", "flv"]

185 });

186 </script>


после добавления скрипта shadowbox на страницу, у нас становится доступен объект Shadowbox, который по умолчанию не инициализирован. Для инициализации необходимо вызкать Shadowbox.init(), где в качестве параметров нужно передать используемый язык и плееры, для отобращения данных.
рассмотрим для чего нужны плееры:
html - для отображения произвольного html кода
iframe - для загрузки во всплывающем окне iframe, с произвольным адресом (не работает без плеера html)
img - для отображения какого-либо изображения (не работает без плеера iframe)
swf - для загрузки swfobject и отображения флеш-объектов
flv - для загрузки плеера и отображения потокового видео (не работает без плеера swf)

4. самый простой способ прикручивания shadowbox к элементам на странице, это: поместить нужную часть html в тег с атрибутом rel="shadowbox", на пример, для открытия картинки в shadowbox достаточно написать:

<a href="images/big_image.jpg" rel="shadowbox"><img src="images/small_image.jpg"
width="100"
/></a>
shadowbox по расширению файла в атрибуре href сам определяет - какой плеер необходимо загружать, для просмотра файла.

5. можно самим решать - какой плеер использовать, и в какой момент открывать, вот пример:

Shadowbox.open({ content: 'ftmp454.swf', player: 'swf', title: ' Привет!!!', width: '500', height: '400' })

во втором параметре пишется название плеера, котрый необходимо открыть (при условии что он был инициализирован)
в третьем - заголовок
в четвертом и пятом - ширина и высота соответственно
а вот первый параметр - неоднозначен, т.к. для разнах плееров он действительно имеет разное значение, так для плеера:
html - Html текст, отображаемый пользователю
iframe - url на страницу
img - пусть к картинке
swf - путь к флешке
flv - путь к видео
Все что я юззал в шадоубоксе более часто чем 1 раз - расписал подробно в примерах, скачать можно тут - примеры shadowbox

Sys $get

Довольно часто приходиться через яваскрипт обращаться к серверным элементам (ну чаще всего теперь только к кнопкам), и большинство программистов, для того чтобы достать кнопку пишут примерно следующее:

var btn = document.getElementById('<%= btnButton.ClientID %>');

а ведь можно реально проще: $get("btnButton") и все! доступ есть

для работы этой фичи на странице (или мастере) должен лежать скрипт-менеджер с установленным свойством EnableScriptGlobalization="true"

вот пример моей страницы:


1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

2

3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

4

5 <html xmlns="http://www.w3.org/1999/xhtml">

6 <head runat="server">

7 <title></title>

8 </head>

9 <body>

10 <form id="form1" runat="server">

11

12 <asp:ScriptManager ID="scriptManager" runat="server" EnablePartialRendering="true" EnableScriptGlobalization="true"></asp:ScriptManager>

13 <div id="div1">

14

15 <asp:Literal runat="server" ID="litText" Text="Изначальный текст"></asp:Literal>

16 <asp:Button runat="server" ID="btnButton" Text="Кнопка"/>

17 <asp:Panel runat="server" ID="aspPanel">

18 Привет!

19 </asp:Panel>

20

21 <br />

22

23 <input type="text" id="text" />

24 <input type="button" onclick="javascript:setText();" value="Установить текст" />

25

26 <script type="text/javascript" language="javascript">

27 function setText() {

28

29 // многие программисты бы написали:

30 var btn = document.getElementById('<%= btnButton.ClientID %>') ;

31

32 // а можно введь проще: $get("btnButton")

33

34 $get("btnButton").value = "Текст после нажатия";

35 $get("aspPanel").innerHTML = "Была нажата кнопка, а это ASP-панель :) доступ через $get('aspPanel')";

36 }

37 </script>

38 </div>

39 </form>

40 </body>

41 </html>


прошу читать: http://www.asp.net/AJAX/Documentation/Live/ClientReference/Global/default.aspx + на msdn про ASP AJAX

Sync Framework

Синхронизация данных
Платформа Microsoft Sync Framework — это комплексная платформа синхронизации данных, обеспечивающая возможность совместной работы, а также автономного использования приложений, служб и устройств. В ее лице разработчики получают инструмент, позволяющий сформировать систему синхронизации, объединяющую практически все типы приложений, все типы данных, все протоколы, и работающий практически в любой сети.
Средства обеспечения совместной и автономной работы
Создание мало связанных решений, способных выполнять синхронизацию, налаживать общий доступ и работать с перемещаемыми профилями на любой платформе, приложении или устройстве.
Мощность
Создание мощных приложений, обеспечивающих доступ к любым данным из любого расположения и в любое время.
Гибкость
Мощная модель метаданных позволяет организовывать совместную и автономную работу практически в любых конечных точках, не требуя вносить изменения в само хранилище данных.
Производительность
Возможности по синхронизации, предоставляемые технологиями корпорации Майкрософт, позволяют быстро создать синхронизированную рабочую среду.
Главные нововведения
Поддержка возможностей синхронизации в новых и существующих приложениях, службах и устройствах.
Обеспечение совместной и автономной работы в любом приложении.
Перемещение и предоставление в общий доступ информации из любого хранилища — посредством любого протокола и при любой конфигурации сети.
Возможности по синхронизации, предоставляемые технологиями корпорации Майкрософт, позволяют быстро создать синхронизированную рабочую среду.
Существующую архитектуру можно дополнить поддержкой пользовательских типов данных, включая файлы.

Синхронизация многих устройств
Платформа Microsoft Sync Framework входят поставщики для часто используемых типов источников данных. Для обмена информацией между устройствами и приложениями можно положиться на один из этих поставщиков или создать собственные.

P.S.: уже есть готовые решения, для передачи данных с компрессией, исходники и сам проект можно качать тут

Rad Active

Это ASP.NET WYSIWYG User Control ресайзинга и кроппинга изображений, а такжа возможность поворота на 90 градусов + зеркальное отображение по вертикали или горизонтили,
Уже в двух комменческих проектах приходилось реализовывать кроппинг изображений самому, вручную - гуглил яваскрипт, изменял под свои нужды или просил коллег, а тут наткнулся на отлаженный ASP.NET Control, поюзал демку - вполне нормальный, и делает то что нужно, только обратите внимание - переварачивать картинку лучше до кроппинга :)



также держится мультизагрузка файлов, и самое интересное - показывается прогресс загрузки

Профайлинг ASP сайтов средствами ASP

Всегда хочется отпимизировать до невозможного и знать - какой контроол и какая функция все отжирает, и всякий раз юзаем сторонние профайлеры...
Ну а предположим, что ну не вариан юзать профайлер? На локали под стресс тулзами отлично сайт работает, а на сервере нет, и нет возможности профайлинга, в этом случае может помочь спец фича асп - Trace!

у страницы, которую хотите профайлить, просто установите свойство Trace="true" и в самом низу страницы увидите более-менее приемлемую статистику.

пример включения:
<%@ Page Trace="true" %>

результат на странице (без подробной статистики):
Сведения о запросе

Идентификатор сеанса: m1qf1nbnutjt5n45odqjsh55 Тип запроса: GET
Время запроса: 25.09.2009 0:30:21 Код состояния: 200
Кодирование запроса: Unicode (UTF-8) Кодирование ответа: Unicode (UTF-8)
Информация трассировки

Категория Сообщение С первой(ых) С последней(их)
aspx.page Begin PreInit
aspx.page End PreInit 0,000219683091741815 0,000220
aspx.page Begin Init 0,00026690469090127 0,000047
aspx.page End Init 0,000342356593906053 0,000075
aspx.page Begin InitComplete 0,000632872084387051 0,000291
aspx.page End InitComplete 0,000669828118511842 0,000037
aspx.page Begin PreLoad 0,000700624813615835 0,000031
aspx.page End PreLoad 0,000740147238999292 0,000040
aspx.page Begin Load 0,000772483768858485 0,000032
aspx.page End Load 0,000883351871232858 0,000111
aspx.page Begin LoadComplete 0,000926467244378448 0,000043
aspx.page End LoadComplete 0,000956750661230708 0,000030
aspx.page Begin PreRender 0,000987034078082967 0,000030
aspx.page End PreRender 0,00262439170111191 0,001637
aspx.page Begin PreRenderComplete 0,0117612578602148 0,009137
aspx.page End PreRenderComplete 0,0161533798602959 0,004392
aspx.page Begin SaveState 0,0285818994477639 0,012429
aspx.page End SaveState 0,0297614128702469 0,001180
aspx.page Begin SaveStateComplete 0,0298173601996858 0,000056
aspx.page End SaveStateComplete 0,0298363514949999 0,000019
aspx.page Begin Render 0,0298527763990554 0,000016
aspx.page End Render 0,0443421081672322 0,014489

уже тут можно понять на каком из этапов идут тормоза, а в подробной статистике отображается время от рендеринга контролов, которое зависит от обрабатываемых данных тоже.

кста, ради эксперимента - попробовал измерить трейсы между биндингов GridView и ListView: в 2 раза вышло быстрее, потому советую поменьше asp контролов юзать на сайте, а при возможности заменять их простым html.

Microsoft Translator Widget

Я, в основном, использую поисковик bing, и по-тихоньку изучаю сервисы майкрософт, и нашел сервис по переводу своего сайта!, можно вставлять html код на сайт и пользовать

например перевод текущей страницы:


Поисковик bing.com



Пользуюсь в основном bing.com.

А сегодня он меня порадовал, т.к. в нем появились новые разделы: карты, новости, шоппинг, и путешествия (как минимум для аутентифицированных пользователей)


Шпаргалка Linq to SQL

Дэмиен Гард сделал хорошую шпаргалку по использованию Linq2Sql, ее достаточно для того чтобы не забыть основы LinqToSql


Шпаргалка

F# Compiler

F# — это функциональный язык программирования общего назначения. Разработан Доном Саймом (англ. Don Syme) в Microsoft Research в Кембридже. Структура F# во многом схожа со структурой OCaml с той лишь разницей, что F# реализован поверх библиотек и среды исполнения .NET.

Некоторые задачи решаются значительно проще и яснее с использованием F# (по сравнению с решениями на господствующих ОО-языках), особенно те, что используют математический стиль программирования. Например, написание компилятора требует работы со структурами данных и преобразованиями над ними.

Microsoft планирует интегрировать среду разработки F# в Visual Studio. Microsoft планирует активно внедрять данный язык в разработку программных систем, которые сами с течением временем смогут масштабироваться, например в зависимости от количества пользователей, данное достоинство нельзя просто реализовать в императивных языках программирования.

Инструменты Web-мастера

Инструменты Web-мастера

yber Analytic
Оценка качества создания сайта.

oogle PageRank Prediction
Предсказывает Ваше будущее значение Google PageRank.

isual PageRank
Отображает значение PageRank для всех ссылок страницы непосредственно в ее содержимом.

oogle Banned Checker
Позволит проверить, не находится ли домен в бан-листе Google.

ink Popularity
Подсчитает количество ответных ссылок на Ваш домен (для Google, MSN, Yahoo).

ageRank Checker
Проверит PageRank Вашего сайта на всех датацентрах Google.

ing Test
Инструмент используется, чтобы проверить присутствие активной связи.

ebsite Speed Test
Узнайте, как быстро загружается Ваш вебсайт. Возможно Вы должны оптимизировать страницу или поискать другой хостинг.

erver Status
Проверит подключение к Вашему вебсайту по протоколам HTTP, FTP, SMTP, POP3.

ink Extractor
Извлекает ссылки из указанной веб-страницы. Показывает входящие и исходящие ссылки.

Multipart Internet Mail Extensions (MIME)


Data Content

Typical Extension


MIME type/subtype

Text and Text-Related Types

HTML text data (RFC 1866)

html htm

text/html

Plain text: documents; program listings

txt c c++ pl cc h

text/plain

Richtext (obsolete - replaced by text/enriched)

text/richtext

Structure enhanced text

(etx?)

text/x-setext

Enriched text markup (RFC 1896)

text/enriched

Tab-separated values (tabular)

(tsv?)

text/tab-separated-values

SGML documents (RFC 1874)

text/sgml

Speech synthesis data (MVP Solutions)

talk

text/x-speech

Document Stylesheet Types

Cascading Stylesheets

css

text/css

DSSSL-online stylesheets

application/dsssl(proposed)

Image Types

GIF

gif

image/gif

X-Windows bitmap (b/w)

xbm

image/x-xbitmap

X-Windows pixelmap (8-bit color)

xpm

image/x-xpixmap

Portable Network Graphics

png

image/x-png

Image Exchange Format (RFC 1314)

ief

image/ief

JPEG

jpeg jpg jpe

image/jpeg

TIFF

tiff tif

image/tiff

RGB

rgb

image/rgb

image/x-rgb

Group III Fax (RFC 1494)

g3f

image/g3fax

X Windowdump format

xwd

image/x-xwindowdump

Macintosh PICT format

pict

image/x-pict

PPM (UNIX PPM package)

ppm

image/x-portable-pixmap

PGM (UNIX PPM package)

pgm

image/x-portable-graymap

PBM (UNIX PPM package)

pbm

image/x-portable-bitmap

PNM (UNIX PPM package)

pnm

image/x-portable-anymap

Microsoft Windows bitmap

bmp

image/x-ms-bmp

CMU raster

ras

image/x-cmu-raster

Kodak Photo-CD

pcd

image/x-photo-cd

Computer Graphics Metafile

cgm

image/cgm

North Am. Presentation Layer Protocol

image/naplps

CALS Type 1 or 2

mil cal

image/x-cals

Fractal Image Format (Iterated Systems)

fif

image/fif

QuickSilver active image (Micrografx)

dsf

image/x-mgx-dsf

CMX vector image (Corel)

cmx

image/x-cmx

Wavelet-compressed (Summus)

wi

image/wavelet

AutoCad Drawing (SoftSource)

dwg

image/vnd.dwg

image/x-dwg

AutoCad DXF file (SoftSource)

dxf

image/vnd.dxf

image/x-dxf

Simple Vector Format (SoftSource)

svf

image/vnd.svf

also vector/x-svf

SGI B&W

bw

image/x-sgi-bw

SGI RGB

rgba sgi

image/x-sgi-rgba

Encapusulated PostScript

eps epsi epsf

image/x-eps

Audio/Voice/Music Related Types

"basic"audio - 8-bit u-law PCM

au snd

audio/basic

Macintosh audio format (AIpple)

aif aiff aifc

audio/x-aiff

Microsoft audio

wav

audio/x-wav

MPEG audio

mpa abs mpega

audio/x-mpeg

MPEG-2 audio

mp2a mpa2

audio/x-mpeg2

compressed speech (Echo Speech Corp.)

es

audio/echospeech

Toolvox speech audio (Voxware)

vox

audio/voxware

RapidTransit compressed audio (Fast Man)

lcc

application/fastman

Realaudio (Progressive Networks)

ra ram

application/x-pn-realaudio

Realaudio plugin (Progressive Networks)

rm rpm

application/x-pn-realaudio-plugin

NIFF music notation data format

application/vnd.music-niff

MIDI music data

mmid

x-music/x-midi

Koan music data (SSeyo)

skp

application/vnd.koan

application/x-koan

Speech synthesis data (MVP Solutions)

talk

text/x-speech

Video Types

MPEG video

mpeg mpg mpe

video/mpeg

MPEG-2 video

mpv2 mp2v

video/mpeg2

Macintosh Quicktime

qt mov

video/quicktime

Microsoft video

avi

video/x-msvideo

SGI Movie format

movie

video/x-sgi-movie

VDOlive streaming video (VDOnet)

vdo

video/vdo

Vivo streaming video (Vivo software)

viv

video/vnd.vivo

video/vivo

Special HTTP/Web Application Types

Proxy autoconfiguration (Netscapebrowsers)

pac

application/x-ns-proxy-autoconfig

See Chapter 6

application/x-www-form-urlencoded

See Chapter 9

application/x-www-local-exec

See Chapter 9 (Netscape extension)

multipart/x-mixed-replace

See Chapter 9 and Appendix B

multipart/form-data

Netscape Cooltalk chat data (Netscape)

ice

x-conference/x-cooltalk

Interactive chat (Ichat)

application/x-chat

Application Types

Text-Related

PostScript

ai eps ps

application/postscript

Microsoft Rich Text Format

rtf

application/rtf

Adobe Acrobat PDF

pdf

application/pdf

application/x-pdf

Maker Interchange Format (FrameMaker)

mif

application/vnd.mif

application/x-mif

Troff document

t tr roff

application/x-troff

Troff document with MAN macros

man

application/x-troff-man

Troff document with ME macros

me

application/x-troff-me

Troff document with MS macros

ms

application/x-troff-ms

LaTeX document

latex

application/x-latex

Tex/LateX document

tex

application/x-tex

GNU TexInfo document

texinfo texi

application/x-texinfo

TeX dvi format

dvi

application/x-dvi

MacWrite document

??

application/macwriteii

MS word document

doc

application/msword

MS word for DOS

msw

application/x-dos_ms_word

WordPerfect 5.1 document

??

application/wordperfect5.1

SGML application (RFC 1874)

application/sgml

Office Document Architecture

oda

application/oda

Envoy Document

evy

application/envoy

application/x-envoy

Wang Info. Tranfer Format (Wang)

application/wita

DEC Document Transfer Format (DEC)

application/dec-dx

IBM Document Content Architecture (IBM)

application/dca-rft

CommonGround Digital Paper (No Hands Software)

application/commonground

FrameMaker Documents (Frame)

doc fm frm frame

application/vnd.framemaker

application/x-maker

application/x-framemaker

Remote printing at arbitrary printers (RFC 1486)

application/remote-printing

Archive/Compressed Archives

Gnu tar format

gtar

application/x-gtar

4.3BSD tar format

tar

application/x-tar

POSIX tar format

ustar

application/x-ustar

Old CPIO format

bcpio

application/x-bcpio

POSIX CPIO format

cpio

application/x-cpio

UNIX sh shell archive

shar

application/x-shar

DOS/PC - Pkzipped archive

zip

application/zip

Macintosh Binhexed archive

hqx

application/mac-binhex40

Macintosh Stuffit Archive

sit sea

application/x-stuffit

Macintosh Macbinary

bin

application/x-macbinary

Fractal Image Format

fif

application/fractals

image/fif

Binary, UUencoded

bin uu

Binary, UUencoded

bin uu

application/octet-stream

PC executable

exe

application/octet-stream

WAIS "sources"

src wsrc

application/x-wais-source

NCSA HDF data format

hdf

application/hdf

Downloadable Program/Scripts

Javascript program

js ls mocha

text/javascript

application/x-javascript

VBScript program

text/vbscript

UNIX bourne shell program

sh

application/x-sh

UNIX c-shell program

csh

application/x-csh

Perl program

pl

application/x-perl

Tcl (Tool Control Language) program

tcl

application/x-tcl

Atomicmail program scripts (obsolete)

application/atomicmail

Slate documents - executable enclosures (BBN)

application/slate

Undefined binary data (often executable progs)

application/octet-stream

RISC OS Executable programs (ANT Limited)

application/riscos

Animation/Multimedia

Andrew Toolkit inset

application/andrew-inset

FutureSplash vector animation (FutureWave)

spl

application/futuresplash

mBED multimedia data (mBED)

mbd

application/mbedlet

Macromedia Shockwave (Macromedia)

application/x-director

Sizzler real-time video/animation

application/x-sprite

PowerMedia multimedia (RadMedia)

rad

application/x-rad-powermedia

Presentation

PowerPoint presentation (Microsoft)

ppz

application/mspowerpoint

PointPlus presentation data (Net Scene)

css

application/x-pointplus

ASAP WordPower (Software Publishing Corp.)

asp

application/x-asap

Astound Web Player multimedia data (GoldDisk)

asn

application/astound

Special Embedded Object

OLE script e.g. Visual Basic (Ncompass)

axs

application/x-olescript

OLE Object (Microsoft/NCompass)

ods

application/x-oleobject

OpenScape OLE/OCX objects (Business@Web)

opp

x-form/x-openscape

Visual Basic objects (Amara)

wba

application/x-webbasic

Specialized data entry forms (Alpha Software)

frm

application/x-alpha-form

client-server objects (Wayfarer Communications)

wfx

x-script/x-wfxclient

General Applications

Undefined binary data (often executable progs)

application/octet-stream

CALS (U.S. D.O.D data format - RFC 1895)

application/cals-1840

Pointcast news data (Pointcast)

pcn

application/x-pcn

Excel spreadsheet (Microsoft)

xls, xlc, xll, xlm, xlw

application/vnd.ms-excel

application/x-msexcel

application/ms-excel

application/msexcel

application/x-excel

Excel for DOS (Microsoft)

xl

application/x-dos_ms_excel

PowerPoint (Microsoft)

ppt, ppz, pps, pot

application/vnd.ms-powerpoint

application/mspowerpoint

Microsoft Powerpoint for DOS (Microsoft)

ppt

application/x-dos_ms_powerpoint2

Help Docs(Microsoft)

hlp

application/mshelp

Microsoft Project (Microsoft)

mpc, mpt, mpx, mpw, mpp

application/vnd.ms-project

application/msproject

Works data (Microsoft)

application/vnd.ms-works

MAPI data (Microsoft)

application/vnd.ms-tnef

Artgallery data (Microsoft)

application/vnd.artgalry

SourceView document (Dataware Electronics)

svd

application/vnd.svd

Truedoc (Bitstream)

application/vnd.truedoc

Net Install - software install (20/20 Software)

ins

application/x-net-install

Carbon Copy - remote control/access (Microcom)

ccv

application/ccv

Spreadsheets (Visual Components)

vts

workbook/formulaone

Cybercash digital money (Cybercash)

application/cybercash

Format for sending generic Macintosh files

application/applefile

Active message -- connect to active mail app.

application/activemessage

X.400 mail message body part (RFC 1494)

application/x400-bp

USENET news message id (RFC 1036)

application/news-message-id

USENET news message (RFC 1036)

application/news-transmission

Multipart Types (mostly email)

Messages with multiple parts

multipart/mixed

Messages with multiple, alternative parts

multipart/alternative

Message with multiple, related parts

multipart/related

Multiple parts are digests

multipart/digest

For reporting of email status (admin.)

multipart/report

Order of parts does not matter

multipart/parallel

Macintosh file data

multipart/appledouble

Aggregate messages; descriptor as header

multipart/header-set

Container for voice-mail

multipart/voice-message

HTML FORM data (see Ch. 9 and App. B)

multipart/form-data

Infinite multiparts - See Chapter 9 (Netscape)

multipart/x-mixed-replace

Message Types (mostly email)

MIME message

message/rfc822

Partial message

message/partial

Message containing external references

message/external-body

Message containing USENET news

message/news

HTTP message

message/http

2D/3D Data/Virtual Reality Types

VRML data file

wrl vrml

x-world/x-vrml

(changing to model/vrml)

WIRL - VRML data (VREAM)

vrw

x-world/x-vream

Play3D 3d scene data (Play3D)

p3d

application/x-p3d

Viscape Interactive 3d world data (Superscape)

svr

x-world/x-svr

WebActive 3d data (Plastic Thought)

wvr

x-world/x-wvr

QuickDraw3D scene data (Apple)

3dmf

x-world/x-3dmf

Scientific/Math/CAD Types

Chemical types -- to communicate information about chemical models

chemical/* (several subtypes)

Mathematica notebook

ma

application/mathematica

Computational meshes for numerical simulations

msh

x-model/x-mesh

(evolving to model/mesh)

Vis5D 5-dimensional data

v5d

application/vis5d

IGES models -- CAD/CAM (CGM) data

igs

application/iges

(evolving to model/iges?)

Autocad WHIP vector drawings

dwf

drawing/x-dwf


Largely Platform-Specific Types


Silicon Graphics Specific Types

Showcase Presentations

showcase slides sc sho show

application/x-showcase

Insight Manual pages

ins insight

application/x-insight

Iris Annotator data

ano

application/x-annotator

Cosmo World Builder

vb

application/x-cosmobuilder

Directory Viewer

dir

application/x-dirview

Software License

lic

application/x-enterlicense

Fax manager file

faxmgr

application/x-fax-manager

Fax job data file

faxmgrjob

application/x-fax-manager-job

IconBook data

icnbk

application/x-iconbook

InPerson Call "Jumper"

ipcall

application/x-inperson-call

InPerson Shared Whiteboard

wb

application/x-inpview

Installable software in 'inst' format

inst

application/x-install

Mail folder

mail

application/x-mailfolder

InPerson People Pages

pp ppages

application/x-ppages

Data for printer (via lpr)

sgi-lpr

application/x-sgi-lpr

Software in 'tardist' format

tardist

application/x-tardist

Software in compressed 'tardist' format

ztardist

application/x-ztardist

WingZ spreadsheet

wkz

application/x-wingz

Open Inventor 3-D scenes

iv

graphics/x-inventor