Как скачать файл одним нажатием кнопки (asp.net)? - PullRequest
0 голосов
/ 20 января 2019

Я создал файл, который хранит все детали из сетки в файле CSV.

protected void onclick_btnExportToExcel(object sender, EventArgs e)
{
    var filename = "Error Details"+System.DateTime.Now.ToString("yyyymmddhhmmss")+ ".csv";

    StringBuilder sb = new StringBuilder();
    var ds1 = DAL_Migration.GetErrorDetails(ViewState["importID"].ToString(), ViewState["filetype"].ToString());
    IEnumerable<string> columnNames = ds1.Tables[0].Columns.Cast<DataColumn>().
                                      Select(column => column.ColumnName);
    sb.AppendLine(string.Join(",", columnNames));

    foreach (DataRow row in ds1.Tables[0].Rows)
    {
        IEnumerable<string> fields = row.ItemArray.Select(field => field.ToString());
        sb.AppendLine(string.Join(",", fields));
    }

    File.WriteAllText(filename, sb.ToString());
    _msgbox.ShowSuccess("File Created");
}

Приведенный выше код просто сохраняет файл в компьютер.

Мне нужен код для прямой загрузки набора данных

1 Ответ

0 голосов
/ 21 января 2019

Вы можете добавить следующий код в конец кода в событии onclick_btnExportToExcel. Кроме того, удалите строку, в которой отображается сообщение, поскольку браузер будет обрабатывать отображение соответствующего сообщения о загрузке.

//get full physical path of file including its name
string fullFileName =  Request.PhysicalApplicationPath + fileName; 

//read contents of file at above location and modify Response header 
//so browser knows response is not html but a csv file content
byte[] Content= File.ReadAllBytes(fullFileName);  
Response.ContentType = "text/csv";
Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".csv");
Response.BufferOutput = true;
Response.OutputStream.Write(Content, 0, Content.Length);
Response.End();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...