【问题标题】:How to send image file with retrofit correctly如何正确发送带有改造的图像文件
【发布时间】:2020-10-29 14:48:21
【问题描述】:

我尝试在 CatsAPI 的帮助下发送照片。

这是用于上传方法upload api。 我有一个界面:

@Headers(value = ["content-type:multipart/form-data;"])
@POST("images/upload")
suspend fun uploadImage(
    @Header("x-api-key") apiKey: String,
    @Body body: MultipartBody,
): UploadCatResponse

我有这个模型用于请求model

我还有一小段代码可以调用这个接口

class SendPhotoModel {

fun uploadPhoto(
    file: File,
    listener: (Int) -> Unit
) = flow {

    val requestBody = RequestBody.create("image/*".toMediaType(), file)
    val multiPartBody = MultipartBody
        .Builder()
        .setType(MultipartBody.FORM)
        .addPart(requestBody)
        .build()

    val result = Api.getApi().uploadImage(
        App.ApiKeyProvider.getKey(),
        multiPartBody
    )

    emit(result)
}

当我单击将图像发送到服务器的按钮时,它会告诉我文件未发送的消息。 {"message":"没有文件发送。","status":400,"level":"info"}
怎么了?所以我尝试在邮递员的帮助下发送相同的文件,它总是有效的。但我不知道如何使相同的请求在改造中起作用。你能帮我解决这个问题吗?我做错了什么?

【问题讨论】:

  • 请贴出错误的全部信息
  • 首先,使用具体的 MIME 类型。这是你的文件;你知道里面有什么。除此之外……file 来自哪里?您正在尝试的file 的值是多少?
  • 我来自相机的文件,它是 jpeg 文件。

标签: android request retrofit


【解决方案1】:

对不起,这是我的错误。我被错误地创建了 MultipartBody.Part 对象

【讨论】:

    猜你喜欢
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多