android - OkHttp 上传文件 - 找不到错误文件 - Android Kotlin
问题描述
我对 Kotlin 和 OkHttp 有点陌生。我正在尝试从图库中选择一张图片并通过 OkHttp 上传。我收到错误“找不到文件”。我相信问题出在mSelectedImageFileUri
. 任何帮助将不胜感激!我有以下代码:
清单文件:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
活动
companion object {
private const val READ_STORAGE_PERMISSION_CODE = 1
private const val PICK_IMAGE_REQUEST_CODE = 2
private val MEDIA_TYPE_JPG = "image/jpg".toMediaType()
}
private fun showImageChooser(){
var galleryIntent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
startActivityForResult(galleryIntent, PICK_IMAGE_REQUEST_CODE)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if(resultCode == Activity.RESULT_OK && requestCode == PICK_IMAGE_REQUEST_CODE && data!!.data != null){
mSelectedImageFileUri = data.data
}
}
private val client = OkHttpClient()
fun uploadFile (){
val requestBody = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("Title","Name")
.addFormDataPart("Image","Image.jpg",File("${mSelectedImageFileUri}").asRequestBody(MEDIA_TYPE_JPG))
.build()
val request = Request.Builder()
.url("custom url")
.post(requestBody)
.build()
client.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
println("ERROR"+e)
}
override fun onResponse(call: Call, response: Response) {
val body = response?.body?.string()
runOnUiThread {
//do something
}
}
})
}
解决方案
推荐阅读
- javascript - Aurelia:@autoinject 不注入元素
- asp.net-mvc - Asp 验证小数未正确绑定
- javascript - 删除数组对象内的字段-javascript
- jquery - jquery在onclick函数中淡入淡出div不起作用
- highcharts - 缺少数据的高图表折线图
- python - ndarray 行不是每行都显示
- android - 如何在不从 Playstore 下载应用程序的情况下测试 Firebase 延迟深层链接?
- django - django FilterSet 结束一天
- json - Go 库映射 json 键以清理输出
- cassandra - Datastax CE Cassandra 迁移到 Apache Cassandra