У меня есть MHTML-файл со встроенными изображениями. MHTML генерируется на сервере, и затем я обычно доставляю файл с использованием BinaryWrite. Я также пробовал Server.Transfer, Response.Write после преобразования в ASCII и записи файла на диск и использования Response.WriteFile. В любом из этих случаев результирующий файл не представляется (кажется) как файл MHT. Для настройки изображения я пробовал Content-ID и Content-Location. URL изображения отображается как cid:example1
при просмотре в IE8. При открытии файла после сохранения на диск он отображается как mhtml:file://C:\Documents
и Settings\benjynito\Desktop\output634172401776447258.mht!cid:example1
. Или при просмотре одним из методов, которые работают, вы получаете mhttp://...output123.mht!cid:example1
.
Output.MimeType это сообщение / rfc822. Я также пробовал application / octet-stream и multipart / related.
Запись файла на диск и использование Response.Redirect работает. Доступ к файлу с прямым URL работает. Сохранение файла на диск и последующее открытие файла работает.
Кажется, IE принимает HTML-запрос к запросу и не расшифровывает новый тип контента. Но вы можете делать такие вещи для динамических таблиц стилей, скриптов и т. Д., Поэтому я не очень верю в это. Я не мог видеть никаких явных различий. Я только что попробовал, и BinaryWrite отлично работает в Opera.
Если мне абсолютно необходимо беспокоиться о записи во временный каталог, а затем о перенаправлении в файл, я это сделаю. Я просто надеялся избежать очистки временных файлов. Что я хочу сделать не возможно? Пример написания файла приведен ниже.
Заранее спасибо!
if (response != null && response.Output != null)
{
Response.Clear();
Response.AddHeader("Content-Type", response.Output.MimeType);
Response.AddHeader("Content-Disposition", "attachment;filename=output" + DateTime.UtcNow.Ticks.ToString(CultureInfo.InvariantCulture) + "." + response.Output.Extension);
// Response.Write( System.Text.Encoding.ASCII.GetString(response.Output.Bytes));
Response.BinaryWrite(response.Output.Bytes);
//Response.Clear();
//Server.Transfer("/ISV/Forms/Test/output634172397522707394.mht");
//Response.Clear();
//Response.WriteFile( Server.MapPath("/ISV/Forms/Test/output634172397522707394.mht"));
Response.Flush();
Response.End();
}