Response.TransmitFile() не может передать пустой файл
Я реализую столбец в GridView, чтобы позволить пользователям загружать файлы, когда они щелкают по имени файла (файлы хранятся в папке "Загрузки" моего проекта).
Код работает нормально, когда в файле есть некоторые данные, т.е. пользователь может щелкнуть файл, и он будет загружен, но когда пользователь щелкает файл, который пуст (например, пустой файл.docx), вместо загрузки отображается пустая страница файл.
вот код:
else if (e.CommandName == "Download")
{
Response.Clear();
if (File.Exists(Server.MapPath("~/Uploads/") + e.CommandArgument))
{
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "filename=" + e.CommandArgument.ToString());
Response.TransmitFile(Server.MapPath("~/Uploads/") + e.CommandArgument);
Response.End();
}
else
{
lblMessage.ForeColor = System.Drawing.Color.Red;
lblMessage.Text = "File Not Found";
}
}
Я тестировал на Chrome, Mozilla и IExplorer.
1 ответ
Вам нужно изменить эту строку:
Response.AppendHeader("Content-Disposition", "filename=" + e.CommandArgument.ToString());
для этого:
Response.AppendHeader("Content-Disposition", filename=\"" + e.CommandArgument.ToString()) \"";