Как преобразовать байт в файл asp.net MVC - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу скачать файл, который я загрузил в базу данных.Файл хранится в байтовом массиве.Я создал функцию getDataStudent, и она работает хорошо.Мой контроллер ниже.

public class Student: Controller
{
      private StudentViewModel getDataStudent(StudentViewModel model)
      { 
        var students = db.students.ToList();
        var documents = documentRepo.GetList_Documents();

        var queryJoin1 = 
            from student in students
            from document in documents.Where(w => student .UniqueNumber == w.UniqueNumber).DefaultIfEmpty()
            select new StudentDto
            {
               ID = student.ID,
               Name = student.Name,
               File = document?.DetailFile ?? null, //file to download
            };
            IEnumerable <StudentDto> studentss= null;
            studentss = queryJoin1;

           return studentss;
       }

    public ActionResult Index(StudentViewModel model)
    { 
        studentViewModel = getDataStudent(model);
        return View(studentViewModel );
    }

    [HttpPost]
    public FileResult DownloadFile()
    {
       //code
    }

}

, а мой вид ниже

@model Student.Data.ViewModels.StudentViewModel
@using (Html.BeginForm())
{
  <table class="table">
            <tr>
                <th>Name</th>
                <th>File</th>             
            </tr>
             @foreach (Student.Data.ViewModels.StudentViewModel item in Model)
            {
              <tr>
                 <td>@Html.DisplayFor(modelitem => item.Name)</td>
                 <td> @Html.DisplayFor(modelitem => item.File)</td>    
              </tr>
            }
   </table>
}

Результат файла все еще пуст, я перепутал использование FileResult.Ребята, не могли бы вы рассказать мне, как загружать файлы с помощью FileResult на контроллер, используя созданную мной функцию getDataStudent.Я никогда не делал функцию загрузки файлов раньше.пожалуйста помогите:)

1 Ответ

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

Вы можете реализовать так:

public FileStreamResult DownloadFile()
{
    // get your students here
    var students = ...
    string name = "yourname.txt";

    FileInfo info = new FileInfo(name);
    if (!info.Exists)
    {
        using (StreamWriter writer = info.CreateText())
        {
            foreach(var item in students){
               writer.WriteLine("{0} {1}", item.ID, item.Name);
            }

        }
    }

    return File(info.OpenRead(), "text/plain");

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...