首页 新闻 会员 周边 捐助

http下载问题?

0
悬赏园豆:10 [待解决问题]

    今天做项目遇到这样一个问题,我在自己的机器测试http下载时,下载的格式是pdf,下载资源没有任何问题,但是今天把项目部署到另一台机上时,却莫名其妙的出现了问题,出现的问题是下载pdf文件,也下载下来了,但是下载的文件大小不对,下载后使用pdf软件打不开,文件,请问大神这是什么原因造成的呢?

Company的主页 Company | 初学一级 | 园豆:32
提问于:2015-11-09 10:10
< >
分享
所有回答(2)
0

那就看你用的哪种方法了,如果服务端直接是动态输出文件流,代码写的不对,就有可能下载不完。如果服务端直接指向文件,一般不会出现这种问题,除非服务端做了下载大小限制。

空明流光 | 园豆:111 (初学一级) | 2015-11-09 10:18

      我的代码是这样写,是动态输出的,是否还有其他的限制。

 1  //输出pdf格式
 2             if ("pdf".Equals(Docformat))
 3                 Context.Response.ContentType = "application/pdf";
 4             //输出xls格式
 5             if ("xls".Equals(Docformat))
 6                 Context.Response.ContentType = "application/vnd.ms-excel";
 7                 Context.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", reportPath.Replace("rpt", Docformat)));
 8                MemoryStream ms=new MemoryStream ();
 9                try
10                {
11                    if ("pdf".Equals(Docformat))
12                        ms = (MemoryStream)rd.ExportToStream(ExportFormatType.PortableDocFormat);
13                    if ("xls".Equals(Docformat))
14                        ms = (MemoryStream)rd.ExportToStream(ExportFormatType.Excel);
15                }
16                catch(Exception e)
17                {
18                    Response.Write("<script> confirm('"+e.Message+"')</script>");
19                    Response.End();
20                }
21                rd.Dispose();
22                Context.Response.BinaryWrite(ms.ToArray());
View Code
支持(0) 反对(0) Company | 园豆:32 (初学一级) | 2015-11-09 10:25

@Company: 这个需要调试的,你这个我看不出来。

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2015-11-09 10:29

@沧海一杰:  在自己的电脑上,是可以下载的并打开成功的,这个如何调试?一般你调试的方法?

支持(0) 反对(0) Company | 园豆:32 (初学一级) | 2015-11-09 10:30

@Company: 部署到你的IIS上,然后让它通过局域网下载,你在自己的w3wp.exe中打断点。

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2015-11-09 10:33

@沧海一杰: 我在自己的局域网下载调试了,但是看不到任何结果,

支持(0) 反对(0) Company | 园豆:32 (初学一级) | 2015-11-09 10:58

@沧海一杰: 这个调试好像没有任何作用,我在部署到自己的机器上,下载和打开是完全没有问题,只是移植到另一个就会出现这个问题。

支持(0) 反对(0) Company | 园豆:32 (初学一级) | 2015-11-09 11:16

@Company: 建议改写你的下载代码,参考微软官方的文件下载方案:

https://support.microsoft.com/zh-cn/kb/812406

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2015-11-11 16:06

@沧海一杰: VS一般也自带远程调试功能,你可以在本机调试其它机器上部署的代码的。

支持(0) 反对(0) 空明流光 | 园豆:111 (初学一级) | 2015-11-11 16:08
0

rd.Dispose();这个是否释放早了,放在BinaryWrite(ms.ToArray());后试试

另外客户端有时使用迅雷等类似加速下载工具也会出现错误

2012 | 园豆:21237 (高人七级) | 2015-11-09 10:53

这个rd.Dispose()往后放了,还是不行。依然出现这样的错误。下载的时候没有使用迅雷等加速器,只是在使用浏览器内置的下载功能。

支持(0) 反对(0) Company | 园豆:32 (初学一级) | 2015-11-09 11:00

@Company: 使用wireshark(可免费下载)在好的机器和问题机器上抓浏览器发的包看看,之间的差异在哪里,估计可以分析到原因

支持(0) 反对(0) 2012 | 园豆:21237 (高人七级) | 2015-11-09 13:37

@2012:这个工具经常在那里使用?

支持(0) 反对(0) Company | 园豆:32 (初学一级) | 2015-11-09 14:15

@2012: 我的意思是说这个工具,具体应用到哪个些开发技术中?

支持(0) 反对(0) Company | 园豆:32 (初学一级) | 2015-11-09 14:15

@2012: 这个工具我下载了,只是显示IP 什么的,怎么看重要的数据?

支持(0) 反对(0) Company | 园豆:32 (初学一级) | 2015-11-09 14:33

@Company: 大概的图解使用参考 http://www.blogjava.net/heyang/archive/2011/04/05/340330.html

这个工具可以看到你的客户端和服务端交互传递的所有数据,你这里主要是看http的内容请求和响应是否存在问题

支持(0) 反对(0) 2012 | 园豆:21237 (高人七级) | 2015-11-09 15:32
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册