使用mvc下载文件

时间:2016-07-06 20:00:31

标签: javascript ajax asp.net-mvc-3

我需要允许我网站上的用户下载文件(xml文件)

我试过

 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;
 }

AJAX:

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

        });
}

但没有下载任何内容

4 个答案:

答案 0 :(得分:1)

是否必须使用ajax完成?也许你可以用文件生成地址打开另一个窗口,让浏览器完成这项工作:

function downloadFile(id) {

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

}

答案 1 :(得分:1)

非常简单

制作链接

 <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();
    }

答案 2 :(得分: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
        });

答案 3 :(得分:0)

您无法使用ajax帖子下载文件。 它无法将文件直接保存到用户的计算机中。 ajax帖子会以原始格式获得响应,但它不会成为文件。

只需使用

<a href="target.php"><img src="assets/img/target.jpg" style="width:50px; height:25px;"></a>