【问题标题】:Saving PDF to OneDrive using jQuery使用 jQuery 将 PDF 保存到 OneDrive
【发布时间】:2023-03-26 03:23:01
【问题描述】:

我的公司开始使用 Microsoft Office 365。他们正在使用 OneDrive 来保存和查看文件。

我的任务是建立一个允许客户将文件直接上传到 OneDrive 的网站。我的团队创建了我们自己的 OneDrive 虚拟帐户来测试保存将由客户上传的文件。

从简单的 HTML 表单输入开始:

<form id="uploadfile">
  <input type="file" id="pdfFile" name="pdfFile" class="form-control" />
  <button type="button" class="btn btn-primary" id="uploadBtn">Upload File</button>
</form>

现在是 jQuery:

$('#uploadBtn').on('click', function(e)
{
  e.preventDefault();
  var formData = new FormData($('#uploadfile')[0]);  // <-- not currently using this variable, but I know I will need it
  var filename = $('#pdfFile').val().replace(/.*(\/|\\)/, '');

  var odOptions = 
  {
    clientId: "00000000-xxxxx-0000-xxxx-0000000000",
    action: "upload",  // <-- was originally set to save
    sourceInputElementId: "pdfFile",
    sourceUri: "",
    fileName: filename,
    openInNewWindow: true,
    advanced: {endpointHint: "api.onedrive.com"},
    success: function(files) { /* success handler */ },
    progress: function(p) { /* progress handler */ },
    cancel: function() { /* cancel handler */ },
    error: function(e) { /* error handler */ }
  }
  OneDrive.save(odOptions);
});

以上所有内容均来自以下链接:

https://docs.microsoft.com/en-us/onedrive/developer/controls/file-pickers/js-v72/save-file

编辑

自从提出这个问题后,我已经取得了一些进展。我可以到达 OneDrive 窗口打开的位置,并且可以看到各种文件夹。但似乎没有文件可供我保存。

从这里开始:

用户选择了一张图片。单击上传按钮后,OneDrive 将打开:

但是当我在 OneDrive 窗口中时,点击保存按钮后,没有文件被保存。

我缺少什么可以将文件保存到 OneDrive 中?

【问题讨论】:

  • 您是否检查过您的正则表达式是否按预期工作?
  • 我可以看到文件名,如果那是你的要求。
  • 你可能没有把它放在你的代码中,因为你自己提到的指南说它是必需的,所以应该很明显,但仍然要问它,你是否按原样导入 OneDrive 脚本指南中提到的?
  • 或者这可能与您的文件大小有关。由于您没有在脚本中明确定义大小限制,因此可能是它不起作用的原因。或者“#pdfFile”在某处重复。
  • (这个问题有一个相关的可能重复的sister question,读者可能希望在回答这个问题之前阅读)。

标签: javascript jquery upload onedrive


【解决方案1】:

我终于能够保存到 OneDrive。对应用程序注册门户(您在其中检索您的 appID)进行了一些调整。我添加了权限以确保我可以读取/写入 OneDrive 中的文件夹。

我还对代码的 odOptions 部分进行了调整:

$('#uploadBtn').on('click', function(e)
{
  e.preventDefault();
  //var formData = new FormData($('#uploadfile')[0]); 
  //var filename = $('#pdfFile').val().replace(/.*(\/|\\)/, '');

  var odOptions = 
  {
    clientId: "00000000-xxxxx-0000-xxxx-0000000000",
    action: "save",  // upload was not valid
    sourceInputElementId: "pdfFile",
    //sourceUri: "", 
    //fileName: filename,
    openInNewWindow: true,
    advanced: {endpointHint: "api.onedrive.com"},
    success: function(files) { /* success handler */ },
    progress: function(p) { /* progress handler */ },
    cancel: function() { /* cancel handler */ },
    error: function(e) { /* error handler */ }     
  }
  OneDrive.save(odOptions);
});

按照此处的文档帮助解决了我的问题:

https://docs.microsoft.com/en-us/onedrive/developer/controls/file-pickers/js-v72/save-file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多