所以this帖子给出了如何使用表单发送下载文件的帖子的答案。但我的API端点并没有识别表单数据。
[HttpPost]
public async Task<IHttpActionResult> DownloadPdfs([FromBody] IEnumerable<int> ids)
{
if (ids == null || ids.Count() < 1)
{
return BadRequest("No ids supplied.");
}
...
&#39; IDS&#39;总是有0的数。
这是JS代码:
function downloadFile(ids) {
var win = 'w' + Math.floor(Math.random() * 1000000000000);
window.open('', win, 'width=250, height=100');
var f = $('<form></form>')
.attr({ target: win, method: 'post', action: 'api/pdfs' })
.appendTo(document.body);
_.each(ids, function (id) {
$('<input></input>')
.attr({ type: 'hidden', name: 'ids', value: id })
.appendTo(f);
});
f[0].submit();
f.remove();
}
最初,我只是将它与其他链接的答案相同,这只是一个输入附加到表单的输入,我在其中将值设置为&#39; ids&#39;。我接下来尝试了这个,但那仍然没有用。
有没有人知道如何调整它仍然使用post数据来提供我的id,这是创建和提供下载文件所需要的?或者有更好的方法吗?
我尝试过只使用Ajax,它返回responseText中的文件内容,但我无法在那里使用它,我无法让浏览器打开它
修改1
value: '{ids: [' + ids.toString() + ']}'
修改2
([FromBody] int[] ids)