如何添加文件并从 OneDrive for Business 同步添加文件附件
Howto add a file with addFileAttachmentAsync from OneDrive for Business
我想使用 Office.js / Outlook 方法 addFileAttachmentAsync 将 OneDrive 中的文件添加到新撰写的邮件中。此文件由另一位 Office365 用户与我共享。如果我使用 Onedrive 界面创建 link 并添加文本“&download=1”,这一切都非常有效。
如果我使用 Graph createLink 创建一个 link,我们确实会得到一个 URI,并且该 URI 似乎有效,但在上传完成后立即生成错误。
如何使用 Graph 生成有效的 URI?
提前感谢您的努力!
威尔科
手工制作的 URI 如下所示:
Graph 生成的 URI 如下所示:
即使我们确保 link 可公开访问,我们也不能将其用于 addFileAttachmentAsync。通过以下命令使用 Graph Createlink:
https://graph.microsoft.com/v1.0/me/drive/items/01ATENY5KYPNW2NH64F5CJEWPK4DYIHSX7/createLink
与以下主体 {"type":"edit","scope":"anonymous"} 交付网络Url:
如果我用OneDrive界面创建一样link结果如下:
第二个 URL 有效。唯一的区别是最后一部分 ?e=fCWoUK。如何从 Graph 获取所需的最后一部分?
结果图片
更长的结果url(手工制作):https://softmakersbv-my.sharepoint.com/:i:/g/personal/wilcotroost_softmakers_nl/EUuTYN05rlNNpYn0IG7FMfkBnnCu6yUUdbj72YcsTc5Wow?e=jWU5Mw
请求的代码示例
let _fileName = 'Picos de Europa'
// graph url ..v1.0/me/drive/items/01ATENY5KYPNW2NH64F5CJEWPK4DYIHSX7/createLink {"type": "edit", "scope": "anonymous"}
//let _fileUrl = 'https://softmakersbv-my.sharepoint.com/:i:/g/personal/tim_softmakers_nl/EVh7baaf3C9Eklnq4PCDyv8BbjtwqSi-a92qYg0EYEE0kA'
// handmade url (create link from the onedrive interface)
let _fileUrl = 'https://softmakersbv-my.sharepoint.com/:i:/g/personal/tim_softmakers_nl/EVh7baaf3C9Eklnq4PCDyv8BbjtwqSi-a92qYg0EYEE0kA?e=fCWoUK'
Office.context.mailbox.item.addFileAttachmentAsync(_fileUrl + '&download=1', _fileName, {}, (result) => {
console.log(result)
})
只有手工linkUrl作品。我的问题是我喜欢用图形 API 创建一个 link。
您要用于 addFileAttachmentAsync
API 的 URI 应该可以公开访问。
为了测试,如果您打开全新的私人浏览器或隐身模式,您应该能够在不登录的情况下访问 URI。
在这种情况下,第一个 URI(附加了 &download=1)是可公开访问的,而第二个则不是。
请检查您的图表 API 以生成可公开访问的 URI。
这个问题的解决方案证明比预期的更简单。很明显,图表 API 给出的 URL 没有切蛋糕。 Outlook Add-Ins 团队对此很清楚。剩下的大问题是;如何从 Graph.
中获得正确的 URL
正确答案是;您不需要像 createLink 这样的功能!如果您只是使用 OneDrive 文件项的 ID 来获取属性(如 https://graph.microsoft.com/v1.0//me/drive/items/01ATEIIBJLT455YK5FLISCBD37Y7SWE),您会发现 属性 @microsoft.graph.downloadUrl 包含正确的 URL。此 URL 在一个小时的时间跨度内有效,并且可以在 Office.js
中与 addFileAttachmentAsync 一起成功使用
感谢大家花时间回答我的问题。
威尔科
我想使用 Office.js / Outlook 方法 addFileAttachmentAsync 将 OneDrive 中的文件添加到新撰写的邮件中。此文件由另一位 Office365 用户与我共享。如果我使用 Onedrive 界面创建 link 并添加文本“&download=1”,这一切都非常有效。
如果我使用 Graph createLink 创建一个 link,我们确实会得到一个 URI,并且该 URI 似乎有效,但在上传完成后立即生成错误。
如何使用 Graph 生成有效的 URI?
提前感谢您的努力!
威尔科
手工制作的 URI 如下所示:
Graph 生成的 URI 如下所示:
即使我们确保 link 可公开访问,我们也不能将其用于 addFileAttachmentAsync。通过以下命令使用 Graph Createlink:
https://graph.microsoft.com/v1.0/me/drive/items/01ATENY5KYPNW2NH64F5CJEWPK4DYIHSX7/createLink
与以下主体 {"type":"edit","scope":"anonymous"} 交付网络Url:
如果我用OneDrive界面创建一样link结果如下:
第二个 URL 有效。唯一的区别是最后一部分 ?e=fCWoUK。如何从 Graph 获取所需的最后一部分?
结果图片
更长的结果url(手工制作):https://softmakersbv-my.sharepoint.com/:i:/g/personal/wilcotroost_softmakers_nl/EUuTYN05rlNNpYn0IG7FMfkBnnCu6yUUdbj72YcsTc5Wow?e=jWU5Mw
请求的代码示例
let _fileName = 'Picos de Europa'
// graph url ..v1.0/me/drive/items/01ATENY5KYPNW2NH64F5CJEWPK4DYIHSX7/createLink {"type": "edit", "scope": "anonymous"}
//let _fileUrl = 'https://softmakersbv-my.sharepoint.com/:i:/g/personal/tim_softmakers_nl/EVh7baaf3C9Eklnq4PCDyv8BbjtwqSi-a92qYg0EYEE0kA'
// handmade url (create link from the onedrive interface)
let _fileUrl = 'https://softmakersbv-my.sharepoint.com/:i:/g/personal/tim_softmakers_nl/EVh7baaf3C9Eklnq4PCDyv8BbjtwqSi-a92qYg0EYEE0kA?e=fCWoUK'
Office.context.mailbox.item.addFileAttachmentAsync(_fileUrl + '&download=1', _fileName, {}, (result) => {
console.log(result)
})
只有手工linkUrl作品。我的问题是我喜欢用图形 API 创建一个 link。
您要用于 addFileAttachmentAsync
API 的 URI 应该可以公开访问。
为了测试,如果您打开全新的私人浏览器或隐身模式,您应该能够在不登录的情况下访问 URI。
在这种情况下,第一个 URI(附加了 &download=1)是可公开访问的,而第二个则不是。
请检查您的图表 API 以生成可公开访问的 URI。
这个问题的解决方案证明比预期的更简单。很明显,图表 API 给出的 URL 没有切蛋糕。 Outlook Add-Ins 团队对此很清楚。剩下的大问题是;如何从 Graph.
中获得正确的 URL正确答案是;您不需要像 createLink 这样的功能!如果您只是使用 OneDrive 文件项的 ID 来获取属性(如 https://graph.microsoft.com/v1.0//me/drive/items/01ATEIIBJLT455YK5FLISCBD37Y7SWE),您会发现 属性 @microsoft.graph.downloadUrl 包含正确的 URL。此 URL 在一个小时的时间跨度内有效,并且可以在 Office.js
中与 addFileAttachmentAsync 一起成功使用感谢大家花时间回答我的问题。
威尔科