如何在Android Studio中调用AnonFiles API实现无WebView文件上传
Android Studio 实现AnonFiles文件上传方案
1. 前置准备:添加依赖和权限
首先引入常用网络请求库OkHttp,在模块级build.gradle的dependencies块中添加:
dependencies { // 版本可以替换为最新稳定版 implementation 'com.squareup.okhttp3:okhttp:4.11.0' }
然后在AndroidManifest.xml中添加必要权限:
<!-- 网络请求权限 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 读取本地文件权限,根据系统版本适配 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />
2. 核心上传代码实现
完全对应你给出的curl和表单参数,采用Multipart表单提交的方式实现,无需依赖WebView:
import okhttp3.*; import java.io.File; import java.io.IOException; public class AnonFilesUploader { private static final String UPLOAD_URL = "https://api.anonfiles.com/upload"; private final OkHttpClient httpClient = new OkHttpClient(); public void uploadFile(File localFile) { // 构造Multipart表单,和HTML表单参数完全对应 MultipartBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) // 对应表单里的隐藏参数MAX_FILE_SIZE,值可根据需要调整 .addFormDataPart("MAX_FILE_SIZE", "30000000") // 这里按你需求改大小,示例是30M // 对应表单里的file字段,第一个参数是字段名,第二个是文件名,第三个是文件的RequestBody .addFormDataPart("file", localFile.getName(), RequestBody.create(localFile, MediaType.parse("application/octet-stream"))) .build(); // 构造POST请求 Request request = new Request.Builder() .url(UPLOAD_URL) .post(requestBody) .build(); // 异步执行请求,避免阻塞主线程 httpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { // 上传失败处理,比如打印错误、提示用户 e.printStackTrace(); } @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { // 上传成功,AnonFiles会返回JSON格式的结果,包含文件访问链接 String responseJson = response.body().string(); // 后续可以自行解析JSON获取文件链接 } else { // 接口返回错误处理 } } }); } }
3. 调用示例
你拿到要上传的本地File对象后,直接调用方法即可:
// 替换为你要上传的本地文件路径对应的File对象 File uploadFile = new File("/storage/emulated/0/Download/test.txt"); new AnonFilesUploader().uploadFile(uploadFile);
注意事项
- 网络请求不能在主线程执行,上面的示例已经用了OkHttp的异步enqueue方法,不需要额外开子线程
- Android 13及以上版本需要动态申请媒体文件读取权限,获取权限后才能访问本地文件
- AnonFiles的API有文件大小限制,免费用户单文件最大不超过20G,返回的JSON结果中包含
error字段时代表上传失败,可以读取对应错误信息排查问题
内容的提问来源于stack exchange,提问作者Sergei Ndreu
相关产品推荐
相关产品推荐

