当前位置: 首页 > 知识库问答 >
问题:

如何在改型2 Kotlin中发送post参数中的任何类型的文件?

支彭亮
2023-03-14

让我分享一些我的代码,我已经实现发送图像文件在请求。

@Multipart
@POST("api/order/order_create")
fun createOrder(
    @Header("Authorization") authorization: String?,
    @Part("category_id") categoryId: RequestBody?,
    @Part("size") size: RequestBody?,
    @Part("narration") narration: RequestBody?,
    @Part("ref_picture") file: RequestBody?
): Call<OrderCreateResponse>
var fbody = RequestBody.create(MediaType.parse("image/*"), imageFile)
var size = RequestBody.create(MediaType.parse("text/plain"), et_custom_order_size.text.toString())
var catId = RequestBody.create(MediaType.parse("text/plain"), selectedID.toString())
var narration = RequestBody.create(MediaType.parse("text/plain"),et_custom_order_narration.text.toString())

val orderCreateAPI = apiService!!.createOrder(complexPreferences?.getPref("token", null), catId,size,narration,fbody)
imageFile = File(Global.getRealPathFromURI(activity!!, imageUri!!))
fun getRealPathFromURI(context: Context, contentUri: Uri): String {
        var cursor: Cursor? = null
        try {
            val proj = arrayOf(MediaStore.Images.Media.DATA)
            cursor = context.contentResolver.query(contentUri, proj, null, null, null)
            val column_index = cursor!!.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)
            cursor.moveToFirst()
            return cursor.getString(column_index)
        } catch (e: Exception) {
            Log.e(TAG, "getRealPathFromURI Exception : " + e.toString())
            return ""
        } finally {
            if (cursor != null) {
                cursor.close()
            }
        }
    }

通过以上方式发送图像,我无法发送它!请用同样的指导我。提前谢了。

共有1个答案

戚衡
2023-03-14
@Multipart
@POST("register")
Observable<SignInResponse> signUp(@Part("name") RequestBody name, @Part MultipartBody.Part fileToUpload);

然后将图像文件作为multipartbody.part变量传递

// image as file
    var body: MultipartBody.Part? = null
    if (!profileImagePath.isNullOrBlank()) {
        val file = File(profileImagePath)
        val inputStream = contentResolver.openInputStream(Uri.fromFile(file))
        val requestFile = RequestBody.create(MediaType.parse("image/jpeg"), getBytes(inputStream))
        body = MultipartBody.Part.createFormData("image", file.name, requestFile)
        Log.d("nama file e cuk", file.name)
    }

您可以使RequestBody var的最后一件事

RequestBody.create(MediaType.parse("text/plain"), user_full_name)

最后发送请求:)

 类似资料:
  • 我有一个用 PhpStorm 管理的 TypeScript 项目。所有 ts 文件都被正确识别为打字稿文件,在我的文件类型设置中,我有 文件映射打字稿。 所有的文件?不,一个文件顽固地不会被视为TypeScript文件,而是显示为纯文本。我不知道如何将这个标记为TypeScript文件。 所有<code>*。ts文件旁边有正确的ts图标。这个没有。 当我打开流氓文件时,PhpStom告诉我有该文件

  • 尝试在RestAssured中发送一个在正文中包含表单数据的POST请求,但不确定该如何执行。在《邮差》里,很好。 我试过这样的事情: 但我的文件似乎没有在请求中发送。 内容-配置表单-数据;名称=元数据;文件名=文件 内容类型:application/octet-stream {“错误”:415,“说明”:内容类型应用程序/Octet-流不受支持}

  • 问题内容: 我想使用angularjs HTTP post service发送多个参数。 这是客户端代码: 这是服务器端代码: 但是当我发表文章时,我得到了错误。知道我在做什么错吗? 问题答案: 考虑带有参数 user* 和 email 的帖子URL * params对象将是

  • 我的代码是: 这给出了错误,请帮助…

  • 通常,对于不同的成员,操作将具有相同数量的参数,即签名看起来非常相似。我的问题是:如果一个成员需要本质上相同的操作,但有一个额外的参数(可能只是一个隐式的:基于上下文修改操作的东西),会发生什么? 有没有一种方法可以做到这一点,而不定义一个全新的(类似的)类型类?

  • 问题内容: 我想将多列的数据类型从float更改为int。最简单的方法是什么? 尚无数据可担心。 问题答案: http://dev.mysql.com/doc/refman/5.1/en/alter- table.html 这将更改给定列的数据类型 根据您希望修改的列数,最好生成一个脚本或使用某种mysql客户端GUI