gpt4 book ai didi

c# - 防止IDM在web api中自动下载

转载 作者:可可西里 更新时间:2023-11-01 03:10:43 25 4
gpt4 key购买 nike

我有一个返回包含 PDF 文件的 HttpResponseMessage 的网络 API 方法。该方法看起来像这样:

HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StreamContent(new FileStream(path, FileMode.Open, FileAccess.Read));
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = fileName;
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
return response;

当我从客户端(用 angularJS 编写)调用此 api 时,Internet 下载管理器会自动捕获 PDF 文件并想要下载它。因为我的项目有安全计划,所以 IDM 会自动请求用户名和密码。有谁知道我应该如何以编程方式阻止 IDM 捕获 PDF 文件?

更新:这是我的 angularJS 代码:

$http.post(url, { transactionId: txId }
, {responseType: 'arraybuffer'})
.success(function (response) {
var reader = new FileReader();
var file = new Blob([response.data], {type: 'application/pdf'});
reader.onload = function (e) {
var printElem = angular.element('#printPdfLink');
printElem.attr('target', '_blank');
printElem.attr('href', reader.result);
printElem.attr('ng-click', '');
};
reader.readAsDataURL(file);
})
.error(function (error) {});

最佳答案

将 mime 类型更改为 application/octet-stream 作为解决您的问题的方法。确保文件名包含正确的文件扩展名,以便客户端系统在下载后能够识别它。

另一个问题是内容的附件 处理,这通常会强制将其保存为文件下载。将其更改为 inline,这样客户端就可以使用它而无需 IDM 尝试将其作为附件下载。

FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read);
StreamContent content new StreamContent(stream);
content.Headers.ContentDisposition = new ContentDispositionHeaderValue("inline");
content.Headers.ContentDisposition.FileName = fileName;
content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream");
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
response.Content = content;
return response;

关于c# - 防止IDM在web api中自动下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43087547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com