2013-07-06 46 views
1

我的Web客户端基于EXT.net网格。
我的服务器建立在ASP.NET web api上。
我的用户使用Internet Explorer(Chrome,Firefox)访问我的应用程序。
我想尝试在一次迭代(单击)中提供用户多个文件(pdf)。
我可以在web api控制器中配置我的方法来传递多个文件吗?
我可以一次多次从客户端拨打电话,让Chrome或Firefox收回多个文件吗?通过Internet Explorer向用户提供多个文件的正确方法

其中一个更好。

这里是我怎么做一个文件下载

客户端:

<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

如果您可以使用Firefox,downthemall插件可能会有所帮助 – NoBugs

回答

3

服务器不能简单地实现多个文件。如果文件是图像,您可以将它们嵌入到页面中。使用.pdf,您需要为用户提供多个链接以下载文件或使用JavaScript打开多个窗口。有些事情是如此:

Response.Write("<script>"); 
Response.Write("window.open('pdfurl1');"); 
Response.Write("window.open('pdfurl2');"); 
... 
Response.Write("</script>"); 

凡pdfurl1,pdfurl2与参数服务器页面的地址,以提供文件1,文件2,...。
用户必须确认每个文件的下载,并且弹出窗口阻止程序处于活动状态时会出现问题。

如果使用会话,请注意只有一个进程可以访问会话,因此用户不能同时下载文件,但如果文件很小,用户可能不会注意到它。

其他方法是创建一个文件(Zip,tar,...)并让用户解压缩它。或者某种浏览器扩展适用于所有浏览器。

相关问题