如何从服务器下载文件到aclient而不返回filepathresult

时间:2017-05-25 20:31:28

标签: javascript asp.net-mvc

我看到了这个代码,用于从服务器下载文件到客户端......

 public ActionResult Download()
  {
     string file = @"c:\someFolder\foo.xlsx";
     string contentType = "application/pdf";   
    return File(file, controntType, Path.GetFileName(file));
  }

但问题是我必须在这个下载方法中做两件事。首先,我想下载文件然后我需要获取下载文件的路径并传入文档视图以显示它。所以我在razor中编写了这段代码。

 function navigate(target) {
    $.ajax({
        url: '@Url.Action("Download", "Patient")',
        type: 'GET',
        dataType: 'json',
        cache: false,
        data: { 'filepath' : target },
        success: function (results) {
            event.preventDefault();
            documentViewr.loadDocument(results);
        },
        error: function () {
            alert('Error occured');
        }
    });
}

在我的控制器中我写了这个:

    [HttpGet]
    public JsonResult Download(string filepath)
    {
        var content_type = "";
        //path = Path.Combine("D:\file1", filename);
        content_type = "application/pdf";
        FilePathResult file = File(filepath, content_type,  

         Path.GetFileName(filepath));
         String sDocID, sDocPath;
         ViewerController vc = new ViewerController();
        sDocPath = Server.MapPath(".") + "\\App_Data\\sample.docx";
        sDocID = vc.LoadDocument(sDocPath);

        return Json(sDocID, JsonRequestBehavior.AllowGet);
    }

所以我的问题是我如何将这两个动作合并在一起?因为如果我不返回FilePathResult我无法下载文件..我的另一个问题是我如何定义文件下载的路径?我可以告诉它将文件下载到例如Server.MapPath(“。”)+“\ App_Data \ ...... ??

如果你能帮助我,我将不胜感激....

0 个答案:

没有答案