日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android kotlin 上传文件 上传图片

發(fā)布時(shí)間:2024/3/7 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。