首页 新闻 会员 周边 捐助

从总服务器上获取到png图片后二进制流输出到客户端变成了gif

0
悬赏园豆:5 [已解决问题] 解决于 2012-07-06 15:03

由于安全原因,图片服务器不能暴露在外网,所以我用一台服务器从图片服务器获取图片然后以二进制流形式返回给客户端,但是中转服务器获取到的是png,客户端接受到的却是gif,其间没有做过任何变动,直接将二进制流转发的,请问这个该怎么处理呢??

wanmingtom的主页 wanmingtom | 初学一级 | 园豆:4
提问于:2012-07-06 14:02
< >
分享
最佳答案
0

是文件内容被改变了,还是只是后缀名被改了?

收获园豆:5
Launcher | 高人七级 |园豆:45050 | 2012-07-06 14:17

什么都没改啊,图片本来是透明的,但是中转之后就白色背景的了,而且图片大小也改变了

wanmingtom | 园豆:4 (初学一级) | 2012-07-06 14:21

@wanmingtom: 那就被修改了嘛!没有修改的含义是,服务器PNG图片转换为 byte[] 要和客户端读取到的 byte[] 相等。如果相等,就说明网络传输没问题,而是客户端加载图片有问题。

Launcher | 园豆:45050 (高人七级) | 2012-07-06 14:25

@程序猿.码农: 

WebClient wc = new WebClient();
            byte[] bytes = wc.DownloadData(url);
            context.Response.BinaryWrite(bytes);

我这样写也能修改啊。。应该不会吧,我是直接转发的啊

wanmingtom | 园豆:4 (初学一级) | 2012-07-06 14:32

@wanmingtom: byte[] src = File.ReadAllBytes("1.png"); byte[] dst = wc.DownloadData(url)

你比较下这两个结果。

Launcher | 园豆:45050 (高人七级) | 2012-07-06 14:36

@程序猿.码农: 弄好了,原来我把地址搞成类似http://localhost/j/redirect.ashx?url=http://t.cn?dd=a&ss=3  js把第二个问号后的&参数都给去掉了,。我用encodeURIComponent加码了一下就好了。。。谢谢你啊

wanmingtom | 园豆:4 (初学一级) | 2012-07-06 15:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册