替换操作中断表OneNote(Graph API)中的图像

时间:2018-10-10 04:19:37

标签: microsoft-graph onenote onenote-api

我必须在桌子里面做。表格中还包含图片。 Page screenshot

我需要标记“ A”为完成。根据文档,我应该对整个表执行替换操作。

首先,我打电话给GET /me/onenote/pages/{pageId}/content?includeIDs=true以查找表的正确ID(请参阅“修补程序之前的页面内容”⇩)。

然后我将PATCH /me/onenote/pages/{pageId}/content与正文一起发送:

[
  {
    "target": "table:{20c31cfe-9865-441d-9dbc-d8c53922d8f5}{21}",
    "action": "replace",
    "content": "<table border=\"1\"><tr><td><p data-tag=\"to-do:completed\">A</p></td><td><img src=\"https://graph.microsoft.com/v1.0/me/onenote/resources/1-66692d9b618447e9ad0d191137fcf91c!1-9857064f-8cbd-4b01-a41d-10e231bd6349/$value\"/></td></tr></table>"
  }
]

API响应204,并且“ A”现在完成。但是图片已损坏:updated page

如何更新包含图像的表?


PATCH(图形API响应)之前的页面内容

<html lang="en-US">
<head>
    <title>Test 1</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="created" content="2018-10-08T12:03:00.0000000" />
</head>
<body data-absolute-enabled="true" style="font-family:Calibri;font-size:11pt">
    <div id="div:{9f7149ca-3f9e-4275-8fa2-a51debcdb40c}{136}" style="position:absolute;left:48px;top:115px;width:624px">
        <table id="table:{20c31cfe-9865-441d-9dbc-d8c53922d8f5}{21}" style="border:1px solid;border-collapse:collapse">
            <tr id="tr:{20c31cfe-9865-441d-9dbc-d8c53922d8f5}{22}">
                <td id="td:{20c31cfe-9865-441d-9dbc-d8c53922d8f5}{23}" style="border:1px solid">
                    <span lang="ru-RU" data-tag="to-do">A</span>
                </td>
                <td id="td:{20c31cfe-9865-441d-9dbc-d8c53922d8f5}{26}" style="border:1px solid">
                    <img id="img:{20c31cfe-9865-441d-9dbc-d8c53922d8f5}{54}" width="99" height="35" src="https://graph.microsoft.com/v1.0/users('0c2b9435-52c9-4480-a1d9-9faa92cecf51')/onenote/resources/1-66692d9b618447e9ad0d191137fcf91c!1-9857064f-8cbd-4b01-a41d-10e231bd6349/$value" data-src-type="image/png" data-fullres-src="https://graph.microsoft.com/v1.0/users('0c2b9435-52c9-4480-a1d9-9faa92cecf51')/onenote/resources/1-66692d9b618447e9ad0d191137fcf91c!1-9857064f-8cbd-4b01-a41d-10e231bd6349/$value" data-fullres-src-type="image/png" />
                </td>
            </tr>
        </table>
    </div>
</body>

1 个答案:

答案 0 :(得分:1)

根据OneNote团队,您需要对图像进行一些转换,然后再发送PATCH。

当您执行页面的GET时,图像会返回src属性,例如:https://graph.microsoft.com/v1.0/users('0c2b9435-52c9-4480-a1d9-9faa92cecf51')/onenote/resources/1-66692d9b618447e9ad0d191137fcf91c!1-9857064f-8cbd-4b01-a41d-10e231bd6349/$value。该值实际上并非直接链接至图像,而是用于获取图像的Graph请求URL。这是关键问题。

您的应用必须在该URL上进行GET才能检索图像内容,然后对返回到base 64的二进制图像进行编码,然后将其添加到<img>标记中。那应该可以解决问题。