Ejemplo n.º 1
0
        public IEnumerable <FileTransferInfo> GetFiles(string folder, string fileMask, bool recursive, string outputDirectory, bool deleteOnSuccess)
        {
            outputDirectory = outputDirectory.Replace('\\', '/');
            if (!outputDirectory.EndsWith("/"))
            {
                outputDirectory += "/";
            }
            FileTransferHelpers.CreateDirectory(outputDirectory);

            // download files
            foreach (var f in GetFileStreams(folder, fileMask, recursive))
            {
                string newFile = null;

                // download file
                try
                {
                    newFile = System.IO.Path.Combine(outputDirectory, System.IO.Path.GetFileName(f.FileName));
                    FileTransferHelpers.DeleteFile(newFile);

                    using (var file = new FileStream(newFile, FileMode.Create, FileAccess.Write, FileShare.Delete, FileServiceConnectionInfo.DefaultWriteBufferSize))
                    {
                        f.FileStream.CopyTo(file, FileServiceConnectionInfo.DefaultWriteBufferSize >> 2);
                    }

                    f.FileStream.Close();
                    f.FileStream = null;

                    // check if we must remove file
                    if (deleteOnSuccess && System.IO.File.Exists(newFile))
                    {
                        client.DeleteFile(f.FileName);
                    }

                    _setStatus(true);
                    break;
                }
                catch (Exception ex)
                {
                    _setStatus(ex);
                    Close();
                    FileTransferHelpers.DeleteFile(newFile);
                    newFile = null;
                    // delay in case of network error
                    System.Threading.Thread.Sleep(Details.RetryWaitMs);
                    // try to reopen
                    Open();
                }
                finally
                {
                    if (f.FileStream != null)
                    {
                        f.FileStream.Close();
                    }
                }

                // check if file was downloaded
                if (newFile != null)
                {
                    var info = new System.IO.FileInfo(newFile);
                    if (info.Exists)
                    {
                        yield return(new FileTransferInfo(newFile, info.Length, info.CreationTime, info.LastWriteTime));
                    }
                }
            }
        }
    protected void LinkButton1_ItemCommand(object sender, ListViewCommandEventArgs e)
    {
        string key = e.CommandArgument.ToString();

        awsHelper.DeleteFile("", key);
    }