# Ktor + FTP

**URL:** <https://discuss.kotlinlang.org/t/ktor-ftp/26911>\
**Category:** Libraries\
**Created:** [June 8, 2023, 7:55am UTC](https://discuss.kotlinlang.org/t/ktor-ftp/26911 "2023-06-08T07:55:49Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Psijic](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/psijic/32/2227_2.png) [@Psijic](https://discuss.kotlinlang.org/u/Psijic)\
**Post date:** [June 8, 2023, 7:55am UTC](https://discuss.kotlinlang.org/t/ktor-ftp/26911/1 "2023-06-08T07:55:49Z")

</div>

Is it possible to use Ktor to upload files via FTP? Or is it possible in Kotlin by default?

---

<div class="post-metadata">

**Author:** ![Psijic](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.kotlinlang.org/psijic/32/2227_2.png) [@Psijic](https://discuss.kotlinlang.org/u/Psijic)\
**Post date:** [June 8, 2023, 8:15am UTC](https://discuss.kotlinlang.org/t/ktor-ftp/26911/2 "2023-06-08T08:15:51Z")

</div>

Current version without Ktor:

```auto
implementation 'commons-net:commons-net:3.9.0'

import org.apache.commons.net.ftp.FTP
import org.apache.commons.net.ftp.FTPClient
import java.io.File
import java.io.FileInputStream

fun uploadFileToFtp(file: File, ftpServer: String, ftpUsername: String, ftpPassword: String, ftpDirectory: String) {
    val ftpClient = FTPClient()
    ftpClient.connect(ftpServer)
    ftpClient.login(ftpUsername, ftpPassword)
    ftpClient.enterLocalPassiveMode()
    ftpClient.setFileType(FTP.BINARY_FILE_TYPE)
    ftpClient.changeWorkingDirectory(ftpDirectory)

    val inputStream = FileInputStream(file)
    val fileName = file.name
    ftpClient.storeFile(fileName, inputStream)
    inputStream.close()

    ftpClient.logout()
    ftpClient.disconnect()
}

```
