文件上传
以常用的网络框架okhttp为例
1、见文件复制到应用专属目录下,可继续使用File路径进行上传;
2、将uri转换为byte[],如下
RequestBody requestBody = RequestBody.create(MediaType.parse("multipart/form-data"), uriToByteArray(context, uri));
public static byte[] uriToByteArray(Context context, Uri uri) {
InputStream inputStream = null;
ByteArrayOutputStream byteArrayOutputStream = null;
try {
inputStream = context.getContentResolver().openInputStream(uri);
byte[] data = new byte[2048];
byteArrayOutputStream = new ByteArrayOutputStream();
while (inputStream.read(data) != -1) {
byteArrayOutputStream.write(data);
}
byteArrayOutputStream.flush();
return byteArrayOutputStream.toByteArray();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (byteArrayOutputStream != null) {
try {
byteArrayOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}