Hassaan_Malik Ответов: 1

Скачанный файл нарушил свой формат


Я написал код для своего веб-приложения, в которое загружаю некоторые файлы (Pdf, png и т. д.) и отображаю их в gridview. Я хочу загрузить загруженный файл из gridview при нажатии на строку. Я успешно выполнил эту задачу, но когда я открываю загруженный файл, я сталкиваюсь с ошибкой "файл не может открыться". Как я могу избавиться от этого.

Вот мой код, который я использую для загрузки файла из gridview.

Что я уже пробовал:

охраняемых недействительными GridView1_RowCommand(объект отправителя, GridViewCommandEventArgs е)
{
if (e. CommandName = = " скачать") {

Ответ.Четкий();
Ответ.Значение contentType = "применение/октете-трансляция";
Ответ.AppendHeader ("content-disposition", "filename=" + e. CommandArgument);

Ответ.Конец();
}
}

Dave Kreskowiak

Вы хотите по-настоящему внимательно взглянуть на тот код, который вы опубликовали? Куда вы отправляете содержимое файла обратно клиенту? До сих пор вы просто создали заголовок для файла, который отправляете обратно, а не сам файл.

Hassaan_Malik

Я новичок в asp.net. это мой первый опыт общения с этим. Не могли бы вы немного подтолкнуть меня к этому или прислать мне какую-нибудь полезную ссылку, откуда я могу получить помощь?. Любая помощь будет высоко оценена. Пожалуйста

[no name]

https://www.asp.net/web-forms/books

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

1 Ответов

Рейтинг:
2

Member 12893295

вам нужно сделать, как показано ниже кода

string filename = Path.GetFileName(FileUpload1.PostedFile.FileName);
    string contentType = FileUpload1.PostedFile.ContentType;
Stream fs = FileUpload1.PostedFile.InputStream;
BinaryReader br = new BinaryReader(fs);
byte[] bytes = br.ReadBytes((Int32)fs.Length);

Response.Clear();
    Response.Buffer = true;
    Response.Charset = "";
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.ContentType = contentType;
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
    Response.BinaryWrite(bytes);
    Response.Flush();
    Response.End();


код не тестируется вам нужно проверить