android kotlin 上传文件 上传图片
生活随笔
收集整理的這篇文章主要介紹了
android kotlin 上传文件 上传图片
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
kotlin 上傳圖片 首先要引入retrofig2
implementation 'com.squareup.retrofit2:retrofit:2.4.0'implementation 'com.squareup.retrofit2:converter-scalars:2.4.0'讀寫權(quán)限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.CAMERA" /><!-- 往sdcard中寫入數(shù)據(jù)的權(quán)限 --><uses-permission android:name="android.permission.VIBRATE" /><!-- 允許程序打開網(wǎng)絡(luò)套接字 --><uses-permission android:name="android.permission.INTERNET" /><!-- 允許程序獲取網(wǎng)絡(luò)狀態(tài) --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 允許程序訪問WiFi網(wǎng)絡(luò)信息 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!-- 允許程序讀寫手機(jī)狀態(tài)和身份 --><uses-permission android:name="android.permission.READ_PHONE_STATE" /><!-- 允許程序訪問CellID或WiFi熱點(diǎn)來獲取粗略的位置 --><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 相機(jī)權(quán)限 --><uses-permission android:name="android.permission.CAMERA" />上傳圖片要通過okhttp3 ?和 Reqest MultipartBody 兩個(gè)類實(shí)現(xiàn)
本篇文章實(shí)現(xiàn)的過程類似模擬前端form表單提交 所以MultipartBody.build一定要加
.setType(MultipartBody.FORM)否則后面的參數(shù) addFormDataPart()是無效的 下面直接上代碼 希望大家不要一味的 cv大法 多看源碼
fun clientOkHttp(POST_IMAGE:String,FILE_IMAGE: ByteArray){val client = OkHttpClient()val requestBody = MultipartBody.Builder().setType(MultipartBody.FORM)//攜帶一個(gè)表單參數(shù).addFormDataPart("username", "Chen-XiaoMo")//設(shè)置參數(shù)名、文件名和文件 .addFormDataPart("myfile","Naruto.jpg",ProgressRequestBody(MediaType.parse("image/*"),FILE_IMAGE, listener)).build()//val requestBody=MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("tset","tset").build()val request = Request.Builder().url(POST_IMAGE).post(requestBody).build()val call = client.newCall(request)try {val response = call.execute()if (response.isSuccessful) {val body = response.body()Log.i("kang","asdjlajslkdjasd=21="+body!!.string())//val string = body!!.string()}response.close()}catch (e:Exception){Log.i("kang","錯(cuò)誤="+e.toString())}}/*** Btimap轉(zhuǎn)數(shù)組*/fun btimapToBtyes(bitmap: Bitmap): ByteArray {val baos = ByteArrayOutputStream()bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos)return baos.toByteArray()} class ProgressRequestBody(private val contentType: MediaType?,private val file: ByteArray,private val listener: ProgressListener) : RequestBody() {override fun contentType(): MediaType? {return contentType}override fun contentLength(): Long {return file.size.toLong()}override fun writeTo(sink: BufferedSink) {try {val max = contentLength()var current = 0L//listenser做監(jiān)聽 這里我只放到這里 不寫監(jiān)聽了 這個(gè)參數(shù)可以不用listener.onStart()//寫入文件sink.write(file)listener.onComplete()} catch (e: Exception) {listener.onError(e)}} }?
總結(jié)
以上是生活随笔為你收集整理的android kotlin 上传文件 上传图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移动端H5实现图片上传
- 下一篇: 使用网口转换器更换网线后无法上网