Kotlin retrofit 如何上传文件
时间: 2024-09-07 11:06:42 浏览: 64
在Kotlin中使用Retrofit上传文件通常涉及到以下几个步骤:
1. 添加依赖:首先,你需要在你的`build.gradle`文件中添加Retrofit和OkHttp的依赖,以及MultipartRequestBody的支持库,例如:
```groovy
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-multipart:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
}
```
2. 创建接口:定义一个包含上传方法的Retrofit接口,假设我们有一个`ApiService`:
```kotlin
interface ApiService {
@Multipart
@POST("upload")
suspend fun uploadFile(
@Part("file") filePart: RequestBody,
@Part("name") name: String = "unknown"
): UploadResponse
}
```
这里`@Multipart`注解表示这是一个支持文件上传的请求。
3. 准备文件数据:你可以从本地获取文件内容并创建`RequestBody`,如使用`RequestBody.create()`函数:
```kotlin
val fileInputStream = FileInputStream(file)
val requestBody =RequestBody.create(MediaType.parse("application/octet-stream"), fileInputStream)
```
4. 发送请求:现在可以使用`Retrofit`的`create()`方法创建服务实例,并调用上面定义的方法:
```kotlin
val apiService = Retrofit.Builder()
.baseUrl("https://your-api-url.com")
.addConverterFactory(MultipartConverterFactory.create())
.client(OkHttpClient())
.build()
.create(ApiService::class.java)
val response = try {
apiService.uploadFile(requestBody, fileName)
} catch (e: Exception) {
// handle exceptions
}
```
5. 异步处理:由于`uploadFile`方法标记为`suspend`,你可以将其放在协程中运行,等待响应。
阅读全文