在我看来,我有一些复选框,它们的值包括一个Uri。 在控制器中,我获取已选中复选框的值,下载其内容(文本)并压缩它们。
看起来像是创建了zip文件,但是当我尝试下载它时,它永远不会起作用。 我没有得到任何错误。更糟糕的是我获得了状态200.
AJAX in View。
$(document).ready(function () {
$('#GetTotal').on('click', function () {
var prices = [];
$('input[name="check[]"]:checked').each(function () {
prices.push($(this).attr("value"));
});
$.ajax({
url: "/AzureSearchService/DownloadAll",
type: "GET",
data: { coursePrices: prices },
dataType: "json",
cache: false,
traditional: true,
success: function () {
alert("ajax request to server succeed");
}
});
});
});
复选框
<input type="checkbox" name="check[]" value="@url" class="checkbox1" style="margin-left: 5px; margin-right: 5px;">
控制器
public ActionResult DownloadAll(IEnumerable<Uri> coursePrices)
{
var outputStream = new MemoryStream();
using (var zip = new ZipFile())
{
foreach (Uri uri in coursePrices)
{
System.Net.WebClient wc = new System.Net.WebClient();
Stream s = wc.OpenRead(uri);
zip.AddEntry(uri.AbsolutePath + ".txt", s);
}
zip.Save(outputStream);
}
outputStream.Position = 0;
return File(outputStream, "application/zip", "all.zip");
}
请在下方通过浏览器找到状态 What Browser Returns Status 200
答案 0 :(得分:0)
如果我正确理解您的问题,您正尝试从ajax调用下载文件。 将文件仅从javascript下载到客户端的计算机通常很棘手。您可以考虑执行以下操作之一:
使用第三方插件,如jQuery文件下载 http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/
您可以将复选框包装在如下表单中:
@using(Html.BeginForm(“DownloadAll”,“AzureSearchService”,/ *附加参数 /))
{
@ 你的复选框就在这里* @
}