You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android上传图片到PHP服务器:net.gotev:uploadservice4.6.0 MultipartUploadRequest用法

修复方案&完整实现代码

问题根因说明

你遇到的两个错误分别是语法错误和版本API变更导致的调用不兼容:

  1. Java方法参数列表不能写void,4.6.0版本通知配置需要接收上传ID作为入参
  2. 4.x版本相比2.x新增了强制初始化要求,部分API参数类型发生了变更,未适配就会抛出IllegalArgumentException

第一步:全局初始化配置

先在你的Application类的onCreate方法中添加初始化代码:

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // 初始化UploadService,三个参数分别为上下文、通知默认图标、是否开启调试日志
        UploadServiceConfig.initialize(this, R.drawable.ic_upload, BuildConfig.DEBUG);
    }
}

第二步:修正通知配置方法

4.x版本通知点击意图需要传入PendingIntent,方法入参改为上传ID:

private UploadNotificationConfig getNotificationConfig(String uploadId) {
    if (!displayNotification.isChecked()) {
        return null;
    }
    return new UploadNotificationConfig()
            .setIcon(R.drawable.ic_upload)
            .setCompletedIcon(R.drawable.ic_upload_success)
            .setErrorIcon(R.drawable.ic_upload_error)
            .setTitle(filename)
            .setInProgressMessage(getString(R.string.uploading))
            .setCompletedMessage(getString(R.string.upload_success))
            .setErrorMessage(getString(R.string.upload_error))
            .setAutoClearOnSuccess(autoClearOnSuccess.isChecked())
            .setClickIntent(PendingIntent.getActivity(this, 0,
                    new Intent(this, MainActivity.class),
                    PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE))
            .setClearOnAction(true)
            .setRingToneEnabled(true);
}

第三步:修正上传请求代码

Multipart请求默认就是POST不需要额外设置,先开启/关闭通知开关再绑定配置:

try {
    // 执行上传前请先确认已获取文件读取权限:Android13+需READ_MEDIA_IMAGES,低版本需READ_EXTERNAL_STORAGE
    String uploadId = new MultipartUploadRequest(this, Constants.UPLOAD_URL)
            .addHeader("User-Agent", getString(R.string.app_name) + "/" + BuildConfig.VERSION_NAME)
            .addParameter("name", name)
            .addParameter("commentsEnabled", "true")
            .addParameter("downloadEnabled", "true")
            .addParameter("waitTranscoding", "true")
            // 这里需确保path路径有效、APP有该文件的读取权限,否则会抛出参数异常
            .addFileToUpload(path, "image")
            // 先设置通知开关
            .setNotificationEnabled(displayNotification.isChecked())
            // 绑定通知配置方法
            .setNotificationConfig(this::getNotificationConfig)
            .setMaxRetries(2)
            .startUpload();
} catch (IOException | IllegalArgumentException e) {
    // 分别处理文件读取错误、参数非法错误
    e.printStackTrace();
}

内容的提问来源于stack exchange,提问作者remov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 12:18:02