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()) \"";
Другие вопросы по тегам