@POST
@Path("/")
@PreAuthorize("isFullyAuthenticated()")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED)
public Response addAsset(
@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail,
@FormDataParam("draftId") Long draftId) throws IOException
{
}
при использовании браузера chrome для просмотра запроса на загрузку файла в разделе «Данные формы» отображается следующее:
------ WebKitFormBoundaryaQvAp0c0jbhLq4af Content-Disposition: form -данные; name = "draftId"
------ WebKitFormBoundaryaQvAp0c0jbhLq4af Content-Disposition: form-data; name = "файл"; filename = "image1.png" Content-Type: image / png
------ WebKitFormBoundaryaQvAp0c0jbhLq4af -
Означает ли это, что значение draftId равно null?
следует ли мне отправлять «draftId» и «file» как составные?
код модернизации, который я пробовал в Android Studio, приведен ниже
API модернизации для запроса загрузки документа:
@POST("resource/asset")
@Multipart
@Headers("Content-Type: multipart/form-data")
fun uploadFile(
@Part draftId: MultipartBody.Part,
@Part file: MultipartBody.Part
): Call<ResponseBody>
код, который отправляет запрос на загрузку, приведен ниже:
private fun uploadFile1(fileUri: Uri?) {
file = com.example.myapplication.utils.FileUtils.getFile(mContext, fileUri)
// create RequestBody instance from file
val filePart: RequestBody = RequestBody.create(
MediaType.parse(activity!!.contentResolver.getType(fileUri!!)!!),
file
)
// MultipartBody.Part is used to send also the actual file name
val body = MultipartBody.Part.createFormData("file", file!!.name, filePart)
val draft = MultipartBody.Part.createFormData("draftId",null, draftpp)
val call = apiInterface.uploadFile(draft, body)
call.enqueue(object : Callback<ResponseBody> {
override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
Log.i("Upload", "success")
}
override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
Log.i("Upload error:", t.message)
}
})
}
Я получаю код ответа 422, может ли кто-нибудь помочь мне решить проблему?