.NET WEB API 使用 FTP 在新的浏览器选项卡中打开图像文件
Posted
技术标签:
【中文标题】.NET WEB API 使用 FTP 在新的浏览器选项卡中打开图像文件【英文标题】:.NET WEB API Open an image file in to a new browser tab by using FTP 【发布时间】:2019-03-06 07:56:35 【问题描述】:我有一个使用 FTP 协议从其他站点下载图像的功能。但是现在我想将它打开到一个新标签中,而不是下载它。这是我下载它的 C# 代码。感谢阅读
byte[] byteFTP = ftpclass.ReadFTPFile(results, ConfigCache.HostURL, ConfigCache.UserName, ConfigCache.Password);
if (byteFTP != null)
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
var dataStream = new MemoryStream(byteFTP);
response.Content = new StreamContent(dataStream);
response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = results;
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
response.Content.Headers.ContentLength = dataStream.Length;
return response;
【问题讨论】:
【参考方案1】:您不能直接选择从服务器端强制打开新标签页。您当然可以包含一些尝试打开新选项卡1 的 javascript 代码,但有一个问题。你听说过弹窗广告吗?让 JavaScript 随意打开新窗口不以响应用户交互在浏览器中越来越受到限制。
因此,您需要在用户执行任何交互时打开该新选项卡(客户端),您的问题中的代码正在运行以响应。那么你的服务器代码就没有任何关系了——你已经给它一个新选项卡来正常传递你的响应(现在可以删除ContentDisposition
相关代码——你可能还想提供更具体的内容类型)
1忽略其他问题,您必须让您的回复包含 JavaScript 而不再包含图像。
【讨论】:
【参考方案2】:要允许在新选项卡中查看文件,您应该将 Content-Disposition 标头设置为 "inline"
。但是,根据文件类型,这仍然可以由浏览器决定。内联只是意味着将在返回下载之前尝试显示它
【讨论】:
以上是关于.NET WEB API 使用 FTP 在新的浏览器选项卡中打开图像文件的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 4,Web API - 404 未找到
Web API 2 入门——使用ASP.NET Web API和Angular.js构建单页应用程序(SPA)(谷歌翻译)
AngularJS UI 路由器 - 在新的浏览器选项卡中使用数据打开状态