我的网络客户端基于EXT.net网格 我的服务器是基于ASP.NET web api构建的 我的用户使用Internet Explorer(chrome,Firefox)访问我的应用程序 我想尝试在一次迭代中点击用户多个文件(pdf)(点击) 我可以在web api控制器中配置我的方法来提供多个文件吗? 我可以一次从客户端进行多次调用,因此chrome或firefox会回放多个文件吗?
哪一个更好。
以下是我如何进行一次文件下载
客户方:
<ext:Button ID="test" Icon="Door" Text="daj mi narudzbu" runat="server">
<DirectEvents>
<Click
IsUpload="true"
FormID="fileform"
AutoDataBind="true"
CleanRequest="true"
Method="POST"
Url="http://localhost:44861/desktopmodules/TkmWebApi/api/reportNarudzba/report"
>
</Click>
</DirectEvents>
</ext:Button>
服务器端:
[AllowAnonymous]
[HttpPost]
public HttpResponseMessage report()
{
HttpResponseMessage response = new HttpResponseMessage();
MemoryStream memoryStream = new MemoryStream();
memoryStream.Write(bytes, 0, bytes.Length);
response.Content = new ByteArrayContent(memoryStream.ToArray());
response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "narudzba.pdf" };
response.StatusCode = HttpStatusCode.OK;
return response;
}
答案 0 :(得分:3)
服务器不能简单地提供多个文件。如果文件是图像,您可以将它们嵌入到页面中。使用.pdf,您需要为用户提供多个链接以下载文件或使用JavaScript打开多个窗口。有点像:
Response.Write("<script>");
Response.Write("window.open('pdfurl1');");
Response.Write("window.open('pdfurl2');");
...
Response.Write("</script>");
其中pdfurl1,pdfurl2是服务器页面的地址,其中包含用于传递file1,file2,....的参数。
用户必须确认每个文件的下载,弹出窗口阻止程序激活时会出现问题。
如果您正在使用会话,请注意只有一个进程可以访问会话,因此用户无法同时下载文件,但如果文件很小,用户可能不会注意到它。
其他方法是创建一个文件(Zip,tar,...)并让用户解压缩它。或者适用于所有浏览器的某种浏览器扩展。