gpt4 book ai didi

javascript - 使用 API 下载文件不起作用

转载 作者:行者123 更新时间:2023-11-28 06:15:15 25 4
gpt4 key购买 nike

我的下载方法的 API 调用存在问题。

这是我正在使用的JS代码,它与knockout一起使用:

self.downloadFile = function(file) {
// Ajax Call Get All Leave Records
$.ajax({
type: "POST",
url: "/api/v1/CompanyFilesApi/DownloadFile",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: ko.toJSON(file),
success: function (data) {
console.log("Here is your file");
},
error: function (error) {

alert(error.status + " <--and--> " + error.statusText);
}
});
// Ends Here
};

这是我的 API 解决方案:

public HttpResponseMessage DownloadFile(FileModel file)
{
var path = file.FilePath;
var result = Request.CreateResponse(HttpStatusCode.OK, file.FileName);
var stream = new FileStream(path, FileMode.Open, FileAccess.Read);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");
return result;
}

文件参数包含文件路径和名称。

谁能告诉我我做错了什么?

响应始终正常,但它进入错误分支并且文件未打开。文件为 PDF、Excel、Word。

最佳答案

编辑2:

您可以使用 target="_blank"而不是下载来在新选项卡中打开 pdf 文件。

修改“a”标签:

$("#your-a-tag-id").attr("href", "data:application/octet-stream;base64," + fileDataString);
<小时/>

编辑:这也可以帮助你 link

<小时/>

一种解决方案是编码为 Base64 并按如下方式使用:

...
dataType: "application/octet-stream;base64"
...

然后将响应数据放入href中

<a href="data:application/octet-stream;base64,/*YOUR FILE DATA*/" download="your filename">

不过我不确定如何在 API 中处理这个问题。

关于javascript - 使用 API 下载文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36037163/

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