• 化繁就简,迎接2012的第一天!


    化繁就简,迎接2012的第一天!

    在下载网络图片的时候,一块很大的图片,你当然不可能一次下载完成,当然要块byte再紧接着块byte的下载

    问题由此产生.....问题代码如下:

      using (var stream = response.GetResponseStream())
                    {
                        int length = (int)response.ContentLength;
                        byte[] bytes = new byte[length];
                        int numBytesToRead = (int)length;
                        int numBytesRead = 0;

                        int readcount = 2000;
                        while (numBytesToRead > 0)
                        {
                                                 // Read may return anything from 0 to 10.
                            int n = stream.Read(bytes, numBytesRead, readcount);
                            // The end of the file is reached.
                            if (n == 0)
                            {
                                return bytes;
                            }
                            numBytesRead += n;
                            numBytesToRead -= n;
                        }
                        return bytes;
                    }
     大家没有注意到,当我们下载的时候,你读取请求的长度,是不能超过文件本身长度的,所以你请求指定位置的内容,不能超过它总的文件长度. (这个是http协议自身决定的,当然也可以在修改这个服务端的协议,一些大的公司,会在这细节上做修改)

    正确的代码就是你在读取最后一块内容结束指定的长度为

                         if (numBytesRead + 2000 > length)
                            {
                                readcount = length - numBytesRead;
                            }

      华丽的分割线,以开始我2012年的第一天!

  • 相关阅读:
    NumPy 位运算
    NumPy 数组迭代
    NumPy 广播
    NumPy 基于数值区间创建数组
    NumPy 数组切片
    NumPy 基于已有数据创建数组
    NumPy 数组创建
    NumPy 数据类型
    NumPy ndarray
    区块链技术学习指引
  • 原文地址:https://www.cnblogs.com/chenli0513/p/2309399.html
Copyright © 2020-2023  润新知