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

Android Java应用使用Microsoft Graph SDK实现带自定义冲突解决策略的OneDrive小文件上传

Android Java应用使用Microsoft Graph SDK实现带自定义冲突解决策略的OneDrive小文件上传

嗨,我来帮你搞定这个OneDrive上传的冲突策略问题!你之前用FunctionOption其实找错了参数类型,咱们用Graph SDK上传小文件时,自定义冲突行为需要用查询参数,对应的是QueryOption而不是FunctionOption,这应该就是你之前没成功的原因。

正确的实现步骤和代码示例

首先先明确冲突策略的可选值,你可以根据需求挑选:

  • rename:如果文件已存在,自动重命名(比如test.txt变成test(1).txt)
  • replace:直接覆盖已存在的文件
  • fail:如果文件已存在就抛出错误(这是默认行为)

下面是完整的Android Java代码示例:

import com.microsoft.graph.models.extensions.DriveItem;
import com.microsoft.graph.requests.extensions.GraphServiceClient;
import com.microsoft.graph.options.QueryOption;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Collections;

// 准备要上传的文件信息
String targetFileName = "你的文件名.txt";
String filePath = "/sdcard/你的文件路径/你的文件名.txt"; // 替换成你的实际文件路径
InputStream fileInputStream = new FileInputStream(new File(filePath));

// 创建冲突解决的查询参数
QueryOption conflictBehavior = new QueryOption("@microsoft.graph.conflictBehavior", "rename");

try {
    // 执行上传请求,添加冲突策略参数
    DriveItem uploadedItem = mClient.getGraphServiceClient()
            .me()
            .drive()
            .root() // 上传到OneDrive根目录,要传指定文件夹的话改成.itemWithPath("文件夹路径")
            .itemWithPath(targetFileName)
            .content()
            .buildRequest(Collections.singletonList(conflictBehavior))
            .put(fileInputStream);
    
    // 上传成功后的处理
    System.out.println("文件上传完成!新文件名:" + uploadedItem.name);
} catch (Exception e) {
    // 异常处理
    e.printStackTrace();
}

额外说明

  1. 如果要上传到OneDrive的指定文件夹,比如根目录下的工作文档文件夹,只需要把root()替换成itemWithPath("工作文档")即可,示例:
.me()
.drive()
.itemWithPath("工作文档")
.itemWithPath(targetFileName)
.content()
// ... 后续代码不变
  1. 别忘了处理文件权限!如果是Android 10及以上,需要申请READ_EXTERNAL_STORAGE或者使用媒体库API读取文件,避免出现文件读取失败的情况。

  2. 确保你的Graph SDK版本是最新的,旧版本可能对QueryOption的支持有差异。

备注:内容来源于stack exchange,提问作者Chin gtman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 12:34:31