2016-07-06 3 views
0

мне нужно, чтобы позволить пользователю на моем сайте, чтобы загрузить файл (XML-файл)Скачать файл с MVC

Я попытался

public FileResult DownloadFile(string fileid) 
{ 
    if (!string.IsNullOrEmpty(fileid)) 
    {    
     byte[] fileBytes = Encoding.ASCII.GetBytes(FileData); 
     return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet,FileName + ".bccx"); 
    } 
     return null; 
} 

Аякса:

function downloadFile(id) { 
     $.ajax({ 
      url: sitePath + "Controller/DownloadFile?fileid=" + id, 
      type: 'post', 
      asysnc: false 
     }) 
     .done(function() { 

     }); 
} 

но ничего Скачано

+2

Возможный дубликат [Загрузить файл по jQuery.Ajax ] (http://stackoverflow.com/questio нс/4545311/загрузки-а-файл за JQuery-Ajax) – malarzm

ответ

0

Нужно ли это делать с помощью ajax? Может быть, вы могли бы открыть еще одно окно с адресом генерации файла и позволить браузеру сделать работу:

function downloadFile(id) { 

    window.open(sitePath + "Controller/DownloadFile?fileid=" + id, '_blank'); 

} 
0

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

$.ajax({ 
      url: sitePath + "Controller/DownloadFile?fileid=" + id, 
      type: 'GET', 
      success: function (filename) { //I return the filename in from the controller 
       frame = document.createElement("iframe"); 
       frame.id = "iframe"; 
       frame.style.display = 'none'; 
       frame.src = '/FileDirectory?fileName=' + filename; //the path to the file 
       document.body.appendChild(frame); 
      }, 
      cache: false, 
      contentType: false, 
      processData: false 
     }); 
0

Вы не можете использовать AJAX пост для загрузки файла. Он не может сохранять файлы непосредственно на компьютере пользователя. Сообщение ajax получит ответ в необработанном формате, но это не будет файл.

Просто используйте

function downloadFile(id) { 
    window.location = "/Controller/DownloadFile?fileid=" + id; 
} 
0

очень просто

делают ссылку

<a href="/Home/preview?id=Chrysanthemum.jpg" > Download File</a> 

и контроллер

public ActionResult preview(string id) 
     { 

      string Filename = Path.GetFileName(@id); 
      string location = id; 
      try 
     { 
      if (System.IO.File.Exists(location)) 
      { 

       FileStream F = new FileStream(@location, FileMode.Open, FileAccess.Read, FileShare.Read); 
       return File(F, "application/octet-stream", Filename); 
      } 

     } 
     catch (IOException ex) 
     { 


     } 
     return View(); 
    }