示例#1
0
        public bool PostFile(string fileName, string address, FileArgs args = null)
        {
            FileStream fs = null;
            long       bytesRemaining;

            try
            {
                if (args != null)
                {
                    args.Identity = identity;
                }
                else
                {
                    args = new FileArgs()
                    {
                        Identity = identity
                    }
                };
                string path = Path.Combine(fileName);
                fs             = File.OpenRead(path);
                bytesRemaining = fs.Length;
                EndpointAddress baseAddress = new EndpointAddress(address + MessageReceiver.Endpoint);
                var             factory1    = new ChannelFactory <IMessageReceiver>(new WSHttpBinding(), baseAddress);
                using (IMessageReceiver chanl = factory1.CreateChannel())
                {
                    chanl.OpenFileForWrite(Path.GetFileName(fileName), args);
                    while (true)
                    {
                        long   bytesToRead  = Math.Min(1024, bytesRemaining);
                        byte[] blk          = new byte[bytesToRead];
                        long   numBytesRead = fs.Read(blk, 0, (int)bytesToRead);
                        bytesRemaining -= numBytesRead;

                        chanl.WriteFileBlock(blk);
                        if (bytesRemaining <= 0)
                        {
                            break;
                        }
                    }
                    chanl.CloseFile();
                }
                fs.Close();
            }
            catch (Exception ex)
            {
                lastError = ex.Message;
                Console.WriteLine("Reason for bombout : " + ex.Message);
                return(false);
            }
            return(true);
        }