核心代码1、VideoUploadUtil 代码object VideoUploadUtil { private val coroutineScope CoroutineScope(Dispatchers.IO SupervisorJob()) public fun uploadVideo() { coroutineScope.launch { try { Log.e(TAG, 开始上传视频) // val videoPath /storage/emulated/0/Android/data/ryb.medicine.reagent/cache/test.mp4 val videoPath BaseApp.getContext().getExternalCacheDir()?.absolutePath /test.mp4 val bean VideoUploadReqBean( 2026-03-11 10:11:00, 2026-03-11 11:11:00, AAC, 52, videoPath, 无 ) VideoUploadRepository.getInstance().uploadVideo(bean) } catch (err: Exception) { LogManager.write(监控视频上传异常 err.message) } finally { LogManager.write(监控视频上传finally) } } } }2、VideoUploadRepository 的代码class VideoUploadRepository { companion object { Volatile private var instance: VideoUploadRepository? null fun getInstance() instance ?: synchronized(this) { instance ?: VideoUploadRepository().also { instance it } } } suspend fun uploadVideo(bean: VideoUploadReqBean): BaseResponseRecordBean { val stBody RequestBody.create( MediaType.parse(text/plain; charsetutf-8), bean.start_time ) val etBody RequestBody.create( MediaType.parse(text/plain; charsetutf-8), bean.end_time ) val dcBody RequestBody.create( MediaType.parse(text/plain; charsetutf-8), bean.department_code ) val decBody RequestBody.create( MediaType.parse(text/plain; charsetutf-8), bean.device_code ) val rBody RequestBody.create( MediaType.parse(text/plain; charsetutf-8), bean.remark ) val vfBody RequestBody.create( MediaType.parse(application/octet-stream), File(bean.video_path) ) val filePart MultipartBody.Part.createFormData( video_file, test3.mp4, vfBody ) return RetrofitAPIManager.provideRetrofit() .create(VideoUploadApi::class.java) .upload(stBody, etBody, dcBody, decBody, rBody, filePart) } }3、API类的代码interface VideoUploadApi { Multipart POST(/api/video/upload) suspend fun upload( Part(start_time) start_time: RequestBody, Part(end_time) end_time: RequestBody, Part(department_code) department_code: RequestBody, Part(device_code) device_code: RequestBody, Part(remark) remark: RequestBody, Part video_file: MultipartBody.Part ): BaseResponseRecordBean }4、Bean代码data class VideoUploadReqBean( val start_time: String , var end_time: String , var department_code: String , var device_code: String , var video_path: String , var remark: String )