如何使用retrofit2发送带有json对象的文件

时间:2017-07-31 07:49:21

标签: node.js retrofit2

我知道这个问题之前可能已被问过,但它对我不起作用。

我的代码:

@Multipart
@PUT("/update")
fun updateClass(
        @Part("data") myData: RequestBody,
        @Part file: MultipartBody.Part? = null
): Call<String>


val imgFile = File(part)

val mFile = RequestBody.create(MediaType.parse("multipart/form-data"), imgFile)

val fileToUpload = MultipartBody.Part.createFormData("file", imgFile.name, mFile)

val myData = RequestBody.create(MediaType.parse("application/json"), json)

retrofit.create(InterfaceRetrofit::class.java).updateClass(myData, fileToUpload).execute()

这里是我的nodejs控制台日志

{ data: '{"id":1,"name":"hhhhhhhhhhh"}' }
{ file:
   { fieldName: 'file',
     originalFilename: 'IMG_20170730_223331.jpg',
     path: 'C:\\Users\\lucius\\AppData\\Local\\Temp\\fT-jA8iemxi50AZZG7CM0q2J.jpg',
     headers:
      { 'content-disposition': 'form-data; name="file"; filename="IMG_20170730_223331.jpg"',
        'content-type': 'multipart/form-data',
        'content-length': '29388' },
     size: 29388,
     name: 'IMG_20170730_223331.jpg',
     type: 'multipart/form-data' } }

是否有可能,如果我想要这样的东西:

{ data: {"id":1,"name":"hhhhhhhhhhh"} }....

感谢

1 个答案:

答案 0 :(得分:0)

您可以使用JSON.parse将变量转换为JSON对象。

你需要尝试,

JSON.parse(put_your_console_log_variable_here)

希望这有帮助!