在C#中创建文件是有效的,但是当下载该文件时没有任何反应。

23 浏览
0 Comments

在C#中创建文件是有效的,但是当下载该文件时没有任何反应。

创建一个文件并上传它,我还想下载那个创建的文件。文件创建成功,但是当要下载创建的文件时,我的以下代码没有任何反应。这是当按钮被点击时调用的代码,但无法下载文件。还检查文件是否存在。它返回true,但是没有给我任何错误,并且当运行此代码时没有任何反应。

[HttpPost]
        public ActionResult DownloadGetOdds(string filename)
        {
            string filepath = Path.Combine(Server.MapPath("~/UploadFiles"), filename + ".json");
            if (file.FileExist(filepath) == true)
            {
                Response.Clear();
                Response.ClearHeaders();
                Response.ClearContent();
                Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename+".json");
                Response.Flush();
                Response.TransmitFile(Server.MapPath("~/UploadFiles/") +filename + ".json");
                Response.End();
                return Json(new { result = "成功" });
            }
            else
            {
                return Json(new {result = "服务器错误" });
            }
        }
    }

文件创建代码

public string CreateJsonFile(string path, string data)
        {
            string status = "";
            try
            {
                using (StreamWriter file = File.CreateText(path))
                {
                    string _data = data;
                    JsonSerializer serializer = new JsonSerializer();
                    //将对象直接序列化到文件流中
                    serializer.Serialize(file, _data);
                }
                status = "成功创建文件";
            }
            catch(Exception ex)
            {
                status = ex.Message;
            }
            return status;
        }

0
0 Comments

问题的原因是使用ajax调用action方法下载文件的方式比较棘手。以下代码帮助我解决了这个问题。

public void DownloadOdds(string filename)
{
    string filepath = Path.Combine(Server.MapPath("~/UploadFiles"), filename + ".json");
    if (file.FileExist(filepath) == true)
    {
        Response.Clear();
        Response.ClearHeaders();
        Response.ClearContent();
        Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + ".json");
        Response.Flush();
        Response.TransmitFile(Server.MapPath("~/UploadFiles/") + filename + ".json");
        Response.End();
    }
}

HTML部分:


function DownloadFile() {
    var file = $("#fileNameID").val();
    window.location.href = '.Action("DownloadOdds", "Home", new { filename = "ff" })'.replace("ff", file);
}

请确保对问题进行了详细的解释,并说明代码如何解决问题。到目前为止,这只是一个“试试这个”的回答,这并没有提供有用的信息。实际上,这并不是第一次尝试通过AJAX下载文件,将问题标记为重复可能更合适,特别是如果您不打算提供一个好的答案。

0