Skip to content

Commit b4b3a28

Browse files
authored
Update ktor-client.md
удален deprecated Input
1 parent 10b3156 commit b4b3a28

File tree

1 file changed

+0
-48
lines changed

1 file changed

+0
-48
lines changed

learning/libraries/ktor/ktor-client.md

Lines changed: 0 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -147,56 +147,8 @@ append("image", File("ktor_logo.png").readBytes(), Headers.build {
147147
...
148148
```
149149

150-
### Передача файла как Input
151-
152-
Этот подход подразумевает использование *kotlinx-io* `Input` ([ссылка на класс](https://ktor.kotlincn.net/kotlinx/io/io/input-output.html)). В таком случае используется другой подход формирования `formData`:
153-
```kotlin
154-
val data: List<PartData> = formData {
155-
appendInput(
156-
key = "yourKey",
157-
block = { input },
158-
headers = Headers.build {
159-
append(
160-
HttpHeaders.ContentType,
161-
ContentType.Application.OctetStream.toString()
162-
)
163-
append(
164-
HttpHeaders.ContentDisposition, ContentDisposition.File
165-
.withParameter(ContentDisposition.Parameters.FileName, fileName)
166-
.toString()
167-
)
168-
}
169-
)
170-
}
171-
```
172-
В примере представлен вариант добавления `headers`, по умолчанию *Empty*. Здесь можно конфигурировать хедеры под ваши нужды.
173-
174150
Касаемо использования formData, существует несколько подходов в формировании *ktor* HTTP клиента:
175151

176-
### Передача файла как Input в common коде
177-
178-
Чтобы реализовать потоковую передачу файла в общем коде, используя ktor, необходимо получить объект [Input](https://api.ktor.io/older/1.6.8/ktor-io/io.ktor.utils.io.core/-input/index.html) на основе файла. Сделать это в общем коде можно используя expect/actual функции:
179-
180-
***commonMain:***
181-
```kotlin
182-
expect fun inputByFilepath(filePath: String): Input
183-
```
184-
***androidMain:***
185-
```kotlin
186-
actual fun inputByFilepath(filePath: String): Input{
187-
val file = File(filePath)
188-
val inputStream = file.inputStream()
189-
return inputStream.asInput()
190-
}
191-
```
192-
***iosMain:***
193-
```kotlin
194-
actual fun inputByFilepath(filePath: String): Input {
195-
val fileHandle = NSFileHandle.fileHandleForReadingAtPath(path = filePath)
196-
return Input(fileHandle!!.fileDescriptor)
197-
}
198-
```
199-
200152
### submitFormWithBinaryData
201153

202154
Для использования этого метода необходимо заранее сформировать `formData`. Код с таким методом выглядит следующим образом:

0 commit comments

Comments
 (0)