jQuery技术:如何从WCF服务流下载文件?

我正在尝试通过使用jQuery调用WCF服务来远程下载CSV文件。 由于该文件实际上并不驻留在服务器上,我一直试图将其作为流返回。 由于我使用Content-Disposition标头,客户端的浏览器应自动开始下载具有给定文件名的文件。

我在C#中的WCF服务方法:

 [OperationContract()] public Stream GetCsvFile(int id) { string s = ...; WebOperationContext.Current.OutgoingResponse.ContentType = "text/csv"; WebOperationContext.Current.OutgoingResponse.Headers["Content-Disposition"] = "attachment; filename="file1.csv""; return GenerateStreamFromString(s); } public Stream GenerateStreamFromString(string s) { MemoryStream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream); writer.Write(s); writer.Flush(); stream.Position = 0; return stream; } 

我的jQuery AJAX请求:

 $.ajax({ type: "POST", url: serviceUrl, cache: false, data: data, dataType: "text", contentType: "application/json; charset=utf-8", success: function() { // TODO... } }); 

此请求成功完成! 我可以在响应中看到正确的CSV数据。 但是,它不会在浏览器中启动实际的“文件下载”操作(暂时在Chrome上进行测试),并且“file1.csv”不会保存到客户端的磁盘中。

在同一应用程序的旧VB.NET版本中,以下工作在.aspx页面代码隐藏:

 Response.Clear() Response.ContentType = "text/csv" Response.AddHeader("content-disposition", "attachment; filename="file1.csv") Response.Write(s) Response.End() 

这将自动启动“file1.csv”的文件下载。 没有“另存为”对话框甚至会显示,该文件将立即下载。 这很酷。

那么当我尝试用jQuery调用WCF服务时怎么会不起作用呢?

    您需要在服务器端指定正确的ContentType

    需要了解更多jQuery教程分享如何从WCF服务流下载文件?,都可以关注jQuery技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是jQuery教程分享如何从WCF服务流下载文件?相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/jquerytutorial/982606.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐