kotlin 上传file: MultipartFile 到ftp服务器上
时间: 2023-10-13 22:29:10 浏览: 94
你可以使用 Apache Commons Net 库来实现将 MultipartFile 上传到 FTP 服务器的功能。以下是一个示例代码:
```kotlin
import org.apache.commons.net.ftp.FTP
import org.apache.commons.net.ftp.FTPClient
import org.springframework.web.multipart.MultipartFile
import java.io.IOException
import java.io.InputStream
fun uploadFileToFTP(file: MultipartFile, ftpServer: String, username: String, password: String, remoteFilePath: String, remoteFileName: String): Boolean {
val ftpClient = FTPClient()
var inputStream: InputStream? = null
try {
ftpClient.connect(ftpServer)
ftpClient.login(username, password)
// 设置文件类型为二进制文件
ftpClient.setFileType(FTP.BINARY_FILE_TYPE)
// 创建远程目录
val remoteDirectoryPath = remoteFilePath.replace("\\", "/")
val directories = remoteDirectoryPath.split("/")
for (directory in directories) {
if (directory.isNotEmpty()) {
ftpClient.makeDirectory(directory)
ftpClient.changeWorkingDirectory(directory)
}
}
// 上传文件
inputStream = file.inputStream
ftpClient.storeFile(remoteFileName, inputStream)
return true
} catch (e: IOException) {
e.printStackTrace()
return false
} finally {
try {
inputStream?.close()
ftpClient.logout()
ftpClient.disconnect()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
```
在该示例中,我们首先创建了一个 FTPClient 对象并连接到 FTP 服务器。然后,我们设置了文件类型为二进制文件,并创建了远程目录。最后,我们使用 MultipartFile 的 inputStream 将文件上传到 FTP 服务器中。
注意,这里的 remoteFileName 参数应该包含文件名和扩展名。例如,如果你要上传名为 example.png 的文件,则 remoteFileName 应该为 "example.png"。
阅读全文