2

我有以下问题:

  1. 我开发了一个 .zip 文件下载,并在 c# 的函数中选择了 .pdf。
  2. 该函数在服务器上的临时文件夹中创建 .zip 文件,并且 HTTP 响应返回此文件。当从 windows 和 IOS 调用时,此函数非常有用。但是当我在 Android 上调用这个函数时,它永远不会下载文件。

在服务器上,我看到该函数在从 android 浏览器(chrome、dolphin ...)调用时一次又一次地创建 .zip 文件,并且从未返回。

奇怪的是,当我选择 90 个 .pdf 文件时我可以很好地运行它(尽管该函数无缘无故地调用了两次),但是当我选择 140 个(或更多)时,问题又发生了。

这是代码:

            **string dirName = Utiles.GetNewName();        
            zipName += ".ZIP\"";
            string urlRet = _mSTempPath + @"\" + dirName + ".ZIP";
            string urlDelete = _mSTempPath + @"\" + dirName;
            System.IO.Stream iStream = null;
            // Total bytes to read:
            long dataToRead;          
            //HttpResponse resp = _page.Response;
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.ClearContent();
            HttpContext.Current.Response.ClearHeaders();
            using (ZipFile zip = new ZipFile())
            {
                foreach (string url in filesURLs)
                {
                    zip.AddFile(url,"");
                }
                zip.Save(_mSTempPath + @"\" + dirName + ".ZIP");
            }
            // Open the file.
            iStream = new System.IO.FileStream(urlRet, System.IO.FileMode.Open,
                        System.IO.FileAccess.Read, System.IO.FileShare.Read);
            // Total bytes to read:
            dataToRead = iStream.Length;
            HttpContext.Current.Response.AddHeader("content-disposition",                  "attachment;filename=\"" + zipName);
            HttpContext.Current.Response.ContentType = "application/octet-stream";
            HttpContext.Current.Response.AddHeader("content-length",   dataToRead.ToString());
            HttpContext.Current.Response.BufferOutput = true;

            HttpContext.Current.Response.TransmitFile(urlRet);
            HttpContext.Current.Response.Flush();**

请,如果有人可以提供帮助,我将不胜感激。再次感谢!

4

0 回答 0