Оказывается, при разработке нашего проекта (файлы хранятся в базе данных) скачиваемые файлы записываются в виде http-заголовков. Как следует Response.Clear();
Ответ.Буфер = ложь;
Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(fileWJNR.Rows[0]["WJM"].ToString(),System.Text.Encoding.UTF8));
Response.BinaryWrite(поток байтов);
Response.End();
Однако после развертывания проекта, когда пользователь просматривает его в IE6.0, он будет перехвачен, закрыт и завершится. В то время мой коллега использовал всплывающую форму, а затем во всплывающей форме «нажмите, чтобы скачать», чтобы ее не перехватили.
Я попробовал более прямое решение, которое заключается в том, чтобы сначала сгенерировать временный файл при нажатии, а затем создать ссылку на временный файл, то есть появится диалоговое окно загрузки или открытия файла. Код очень простой:
строка fileName = «имя файла» //используем идентификатор файла.
строка tempFilePath = Request.PhysicalPath;
tempFilePath = tempFilePath.Substring(0,tempFilePath.LastIndexOf("\"));
tempFilePath += " \temp\ " + имя_файла;
Файл FileStream = новый FileStream (tempFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite,
попробуйте
);
{
byte[] docBody = (byte[])fileWJNR.Rows[0]["WJNR"] //Преобразование;
file.Write(docBody, 0, docBody.Length);
файл.Закрыть();
Response.Redirect("temp\" + имя_файла);
}
ловить
{
файл.Закрыть();
}