Android文件上传实现详解

Android 的文件上传,说难不难,说简单也真不简单。权限、文件读取、网络求这些老朋友全得登场。尤其是从 Android 6.0 开始,权限管得更严,没加动态权限别想碰文件。嗯,选文件也挺讲究的,用Intent.ACTION_OPEN_DOCUMENT就还不错,兼容性也好。

权限这关过了,接下来就是读文件内容。常见的FileInputStream够用,想读取字符的话换BufferedReader更方便。文件搞定后就是发求了——推荐用OkHttp,比HttpURLConnection好用太多,封装得也舒服。

文件上传基本都是multipart/form-data格式,是有表单字段的时候。用MultipartBody.Part搞定每一段,搭配RequestBody.create()就能把文件包进去,设置好Content-Type就能发求。

想要更人性化点?加个上传进度监听。重写RequestBodywriteTo方法,每写一点更新进度,这招比较通用。异步操作就更别说了,UI 线程跑网络求绝对不行,可以用Coroutine,也可以试试IntentService,后台上传更稳。

网络错误也是绕不开的,连接超时、服务器挂了这些都得。建议加个重试机制,出错就告诉用户重试,不然用户一脸懵。哦对了,还有现成的上传库像Android-Upload-Service,支持断点续传,适合大文件。

如果你对上传逻辑要求不复杂,其实直接用 OkHttp 就顺手。如果想偷点懒,又不想自己封装太多,像upload_file_android这类库也挺不错的,配置一下就能跑。

zip 文件大小:342.92KB