PHPackages                             autoframe/components-ftp-transfer - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [File &amp; Storage](/categories/file-storage)
4. /
5. autoframe/components-ftp-transfer

ActiveLibrary[File &amp; Storage](/categories/file-storage)

autoframe/components-ftp-transfer
=================================

Transfer files/folders from local to ftp with php. Resumable transfers, cli ftp, upload progress...

1.0.1(2y ago)05MITPHPPHP &gt;=7.4

Since Oct 22Pushed 2y ago1 watchersCompare

[ Source](https://github.com/autoframe/components-ftp-transfer)[ Packagist](https://packagist.org/packages/autoframe/components-ftp-transfer)[ Docs](https://github.com/autoframe)[ RSS](/packages/autoframe-components-ftp-transfer/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (3)Versions (2)Used By (0)

Autoframe is a low level framework that is oriented on SOLID flexibility
========================================================================

[](#autoframe-is-a-low-level-framework-that-is-oriented-on-solid-flexibility)

[![Build Status](https://github.com/autoframe/components-ftp-transfer/workflows/PHPUnit-tests/badge.svg)](https://github.com/autoframe/components-ftp-transfer/actions?query=branch:main)[![License: The 3-Clause BSD License](https://camo.githubusercontent.com/e59c86c386e82c4d9abea93319bc29a946d9caff22a3fb7eec44db121bc8dba1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f6175746f6672616d652f636f6d706f6e656e74732d6674702d7472616e73666572)](https://opensource.org/license/bsd-3-clause/)[![Packagist Version](https://camo.githubusercontent.com/e0ea70199adeb62482d1e34b27a721e15e432508090fbde873143e40f9c2caeb/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6175746f6672616d652f636f6d706f6e656e74732d6674702d7472616e736665723f6c6162656c3d7061636b6167697374253230737461626c65)](https://camo.githubusercontent.com/e0ea70199adeb62482d1e34b27a721e15e432508090fbde873143e40f9c2caeb/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6175746f6672616d652f636f6d706f6e656e74732d6674702d7472616e736665723f6c6162656c3d7061636b6167697374253230737461626c65)[![Downloads](https://camo.githubusercontent.com/39c02a5e455faa103f82cac4861df4952b7483b0d5d8ad7038ad21e0d3d3320b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f646d2f6175746f6672616d652f636f6d706f6e656e74732d6674702d7472616e736665722e737667)](https://packagist.org/packages/autoframe/components-ftp-transfer)

*PHP File copy to FTP protocol via CLI uploader and reporter*

```
namespace Autoframe\Components\FtpTransfer;
...
class AfrFtpBackupConfig
{
    protected string $sBusinessLogicClass = AfrFtpPutBigData::class; //Class must implement AfrFtpBusinessLogicInterface::class
    public function setBusinessLogic(string $BusinessLogicClass): void {}
    public function getBusinessLogic(): string {}

    protected ?string $sReportClass = null;  //Class must implement AfrFtpReportInterface::class
    public function setReportClass(string $sReportClass): void {}
    public function getReportClass(): string {}

    public string $sTodayFolderName = 'today';
    public string $sLatestFolderName = '!latest';
    public string $sResumeDump = __DIR__ . DIRECTORY_SEPARATOR . 'self.resume.php';

    /**
     * From local dir path is in key,
     * Ftp destination dir path is into value
     * = [ 'C:\xampp\htdocs\afr\src\FtpBackup' => '/bpg-backup/MG1/test2/resume']
     */
    public array $aFromToPaths;

    public string $ConServer; //Server ip or hostname
    public string $ConUsername;
    public string $ConPassword;
    public int $ConPort = 21;
    public int $ConTimeout = 90;
    public bool $ConPassive = true;
    public int $iDirPermissions = 0775;

    public string $sReportTarget = '';
    public string $sReportTo = '';
    public string $sReportToSecond = '';
    public string $sReportSubject = 'Ftp upload report';
    public string $sReportBody ;
    public $mReportMixedA = null;
    public $mReportMixedS = null;
    public $mReportMixedI = null;
    public int $iLogUploadProgressEveryXSeconds = 60;

    public function __construct(string $sTodayFolderName = null)
    {
        if ($sTodayFolderName === null) {
            $sTodayFolderName = date('Ymd');
        }
        $this->sTodayFolderName = $sTodayFolderName;
    }

}
```

---

```
namespace Autoframe\Components\FtpTransfer\Connection;
...
interface AfrFtpConnectionInterface
{
    public function connect();
    public function disconnect(): void;
    public function reconnect(int $iTimeoutMs = 10);
    public function getConnection();
    public function getLoginResult(): bool;
    public function getError(): string;
    public function __destruct();
    public function getDirPerms(): int; //from ftpConfig object
}
```

---

```
namespace Autoframe\Components\FtpTransfer\FtpBusinessLogic;
...
interface AfrFtpBusinessLogicInterface
{
    public function makeBackup(): void;
}
```

---

```
namespace Autoframe\Components\FtpTransfer\Log;
...
interface AfrFtpLogInterface
{
    public const FATAL_ERR = 1;
    public const MESSAGE = 2;

    public function newLog(): self;
    public function logMessage(string $sMessage, int $iType): self;
    public function closeLog(): self;
}
```

---

```
namespace Autoframe\Components\FtpTransfer\Report;
...
interface AfrFtpReportInterface
{
    public function ftpReport(AfrFtpBackupConfig $oFtpConfig): array;
}
```

###  Health Score

20

—

LowBetter than 14% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

932d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d6ba2f50102c2d35a8f6773c95fa270199a3af9c555dfc96ac85afb8c10a2a3c?d=identicon)[autoframe](/maintainers/autoframe)

---

Top Contributors

[![autoframe](https://avatars.githubusercontent.com/u/34517931?v=4)](https://github.com/autoframe "autoframe (9 commits)")

---

Tags

ftpfile systemloopingRecoursive copyUpload pregress

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/autoframe-components-ftp-transfer/health.svg)

```
[![Health](https://phpackages.com/badges/autoframe-components-ftp-transfer/health.svg)](https://phpackages.com/packages/autoframe-components-ftp-transfer)
```

###  Alternatives

[league/flysystem

File storage abstraction for PHP

13.6k639.1M2.2k](/packages/league-flysystem)[nicolab/php-ftp-client

A flexible FTP and SSL-FTP client for PHP. This lib provides helpers easy to use to manage the remote files.

6435.3M24](/packages/nicolab-php-ftp-client)[creocoder/yii2-flysystem

The flysystem extension for the Yii framework

2931.7M62](/packages/creocoder-yii2-flysystem)[league/flysystem-ftp

FTP filesystem adapter for Flysystem.

2820.8M101](/packages/league-flysystem-ftp)[igorw/file-serve-bundle

Symfony2 Bundle for serving protected files.

166156.5k](/packages/igorw-file-serve-bundle)[yii2mod/yii2-ftp

A flexible FTP and SSL-FTP client for PHP. This lib provides helpers easy to use to manage the remote files.

32433.0k3](/packages/yii2mod-yii2-ftp)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
