我想上傳的Android /科特林文件:無法上傳Android的文件,有沒有錯誤的細節
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//...........
UploadFilesTask().execute(1)
}
//.......
private class UploadFilesTask : AsyncTask<Int, Int, Int>() {
override fun doInBackground(vararg params: Int?): Int? {
val MEDIA_TYPE_PNG = MediaType.parse("image/jpg")
val client = OkHttpClient()
val requestBody = MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("title", "test123")
.addFormDataPart("file", "image-name-123.jpg", RequestBody.create(MEDIA_TYPE_PNG,
File("/storage/emulated/0/Download/real-file-name.jpg")))
.build()
val request = Request.Builder()
.url("http://httpbin.org/post")
.post(requestBody)
.build()
val response = client.newCall(request).execute()
if (!response.isSuccessful) {
throw IOException("Unexpected code " + response)
} else {
Log.d("test", "Done123")
Log.d("test", response.body().string())
}
return 123
}
protected fun onProgressUpdate(vararg progress: Int) {
}
protected override fun onPostExecute(result: Int?) {
}
}
唯一的錯誤信息,我可以看到,當我運行它:
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
我該如何解決?
的權限是:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
和依賴性:
compile "com.squareup.okhttp3:okhttp:3.0.1"
也許,你需要添加WRITE_EXTERNAL_STORAGE許可? – Majestic
@Majestic,тычё? Голова。 Причёмтут寫? –
不要使用'/ storage/emulated/0',請使用'Environment.getExternalStorageDirectory()'。 –