Пример #1
0
        /// <summary>
        /// 计算长度
        /// </summary>
        /// <returns></returns>
        public override long ComputeLength()
        {
            if (PostedFile.Count != 0)
            {
                var boundary = "ifish_network_client_" + base.Message.RequestBoundary.DefaultForEmpty(Guid.NewGuid().ToString().Replace("-", ""));
                WebRequset.ContentType = "multipart/form-data; boundary=" + boundary;

                var size = StringField.Select(
                    s =>
                    (long)2                                  //--
                    + boundary.Length                        //boundary
                    + 2                                      //\r\n
                    + 45                                     // content-disposition
                    + s.Key.Length                           //key
                    + Message.Encoding.GetByteCount(s.Value) //value
                    + 2                                      //\r\n
                    ).Sum();

                //attach file
                size += PostedFile.Sum(s => s.ComputeLength());
                size += 4 + boundary.Length;                    //结束标记
                return(size);
            }
            PreProcessData();
            return(_processedData.Select(s => s.Key.Length + 1 + s.Value.Length).Sum() + _processedData.Count - 1);
        }