【发布时间】:2019-03-20 08:30:02
【问题描述】:
我很难完成一项本应轻松的任务,而且我不知道我做错了什么,或者我必须在其他地方寻找问题。基本上我有我的 javascript POST 请求:
$.ajax(
{
url: "/upload",
type: "POST",
data: formData,
cache: false,
contentType: false,
processData: false,
success: function (data) {
stopUpdatingProgressIndicator();
}
}
);
}
var intervalId;
function startUpdatingProgressIndicator() {
$("#progress").show();
$.post(
"/upload/progress",
function (progress) {
}
);
在我的控制器中,我以这种方式提供文件:
return File(fileMod, System.Net.Mime.MediaTypeNames.Application.Octet, "test.mod");
但是什么也没发生,没有文件可供下载,fileMod 是一个简单的字节数组,并且没有显示错误..
编辑 我还尝试在我的'return file'中将内容类型设置为'application/force-download`,但没有成功。
【问题讨论】:
-
return File存在于哪个动作中?如果您直接从 AJAX POST 返回文件,这是不可能的(您必须使用 GET 操作来下载它)。 -
如果您将文件返回给 ajax 请求(GET 或 POST),那么 ajax 请求会接收文件,而不是浏览器,因此您不会收到“下载提示”存储在
data中的success:function(data)- 你需要在success:中添加一些javascript 来告诉浏览器提示保存它。 -
最简单的选择是通过 url 打开下载操作到一个新的浏览器窗口/选项卡 - 该窗口将显示一个进度条并在文件下载后自动关闭。不过可能不适合您的情况。
-
@freedomn-m 非常感谢您的回复!你能提供一个小例子作为答案吗?为我指明正确的方向?
标签: jquery post asp.net-core-mvc asp.net-core-2.1