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

使用jQuery将PDF保存至OneDrive遇文件无法保存问题求助

解决OneDrive文件上传无响应的问题

看起来你踩了个常见的API使用误区——你用了OneDrive.save()方法,但这个方法是用来把应用生成的内容(比如网页里的文本、Blob数据)保存到OneDrive的,不是用来上传用户本地文件的。这就是为什么你选了文件后点击保存却没反应的核心原因。

下面是具体的修复方案,一步步来:

1. 替换正确的API方法

把OneDrive.save(odOptions)改成OneDrive.open(odOptions)。OneDrive.open()才是用于调用文件选择器上传本地文件到OneDrive的正确方法。

2. 调整配置参数

你的现有配置需要做这些修改:

  • 移除手动设置的fileName参数:上传本地文件时,文件名会自动从用户选择的文件中获取,不需要手动截取。
  • 添加select配置项,明确允许上传操作:
    select: {
      allowUpload: true,
      allowMultiSelect: false // 如果你只需要单文件上传
    }
    
  • 确保sourceInputElementId正确指向你的文件input(pdfFile),这个参数告诉OneDrive控件要从哪个输入框获取上传的文件。

调整后的完整配置代码大概是这样:

$('#uploadBtn').on('click', function(e) {
  e.preventDefault();
  
  var odOptions = {
    clientId: "00000000-xxxxx-0000-xxxx-0000000000", // 确保这个ID正确
    action: "upload",
    sourceInputElementId: "pdfFile",
    openInNewWindow: true,
    advanced: {endpointHint: "api.onedrive.com"},
    select: {
      allowUpload: true,
      allowMultiSelect: false
    },
    success: function(files) { 
      console.log("上传成功:", files);
      // 这里可以处理成功后的逻辑,比如提示用户
    },
    progress: function(p) { 
      console.log("上传进度:", p.percentage);
    },
    cancel: function() { 
      console.log("用户取消上传");
    },
    error: function(e) { 
      console.error("上传出错:", e);
    }
  };
  
  OneDrive.open(odOptions); // 这里换成open方法
});

3. 检查应用注册权限

别忘了确认你的Azure AD应用注册(对应那个clientId)已经配置了正确的权限:

  • 登录Azure Portal,找到你的应用注册
  • 进入「API权限」页面,添加委派权限:Files.ReadWrite或者Files.ReadWrite.All
  • 点击「授予管理员同意」(如果是使用租户内的测试账户,这一步很重要)

额外提醒

你之前定义的formData变量现在用不上了,因为OneDrive的文件选择器控件会自动处理文件上传的流程,不需要手动构建FormData。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:22:58