Exemple #1
0
        public override async Task PartialUpload(string path, string name, int offset, byte[] buffer)
        {
            if (base.Config.Folder != "/")
            {
                path = base.Config.Folder + path.TrimStart('/');
            }

            using (var sftp = GetClient())
            {
                sftp.Connect();

                sftp.ChangeDirectory(path);

                if (offset == 0)
                {
                    using (MemoryStream ms = new MemoryStream(buffer))
                    {
                        sftp.UploadFile(ms, name);
                    }
                }
                else
                {
                    path = path.TrimEnd('/');
                    path = string.Format("{0}/{1}", path, name);
                    using (SftpFileStream stream = sftp.Open(path, FileMode.Append, FileAccess.Write))
                    {
                        await stream.WriteAsync(buffer, 0, buffer.Length);

                        await stream.FlushAsync();
                    }
                }

                sftp.Disconnect();
            }
        }