在C#中创建文件是有效的,但是当下载该文件时没有任何反应。
在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; }
问题的原因是使用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下载文件,将问题标记为重复可能更合适,特别是如果您不打算提供一个好的答案。