Неправильный размер вложения в msgraph api

Размер свойства FileAttachment больше, чем фактический размер двоичного файла.

 {
    "@odata.type": "#microsoft.graph.fileAttachment",
    "@odata.mediaContentType": "application/octet-stream",
    "id": "<the attachment id>",
    "lastModifiedDateTime": "2020-10-26T09:57:36Z",
    "name": "test.bin",
    "contentType": "application/octet-stream",
    "size": 245,
    "isInline": false,
    "contentId": null,
    "contentLocation": null,
    "contentBytes": "aGVsbG8gd29ybGQ="
}

Вот фрагмент кода java, созданный над данными json:

IGraphServiceClient graphClient = GraphServiceClient.builder().authenticationProvider(provider).buildClient();
FileAttachment attachment = new FileAttachment();
attachment.oDataType = "#microsoft.graph.fileAttachment";
attachment.name = "test.bin";
attachment.contentBytes = "hello world".getBytes();

Attachment att = graphClient.users().byId(userId).messages().byId(mailId).attachments().buildRequest().post(attachment);
System.out.println(att.size);

person Yangjing Zhang    schedule 26.10.2020    source источник


Ответы (1)


Размер вложения в графике должен соответствовать свойству PidTagAttachSize https://docs.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-oxprops/917d8d18-adee-4f14-9f2a-9a1d37fff41e. Возвращаемый размер в основном состоит из размера всех свойств вложения (а не только базового размера вложения) в объекте Attachment. Таким образом, он всегда будет больше, чем фактический размер вложения. Есть еще одно описание https://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/pidtagattachsize-canonical-property.

Это свойство можно использовать для проверки приблизительного размера вложения перед выполнением удаленной передачи по модему и для отображения индикаторов выполнения при сохранении вложения на диск. Это особенно полезно с присоединенными объектами OLE.

Учитывая, что они говорят о модемах, это немного устарело.

person Glen Scales    schedule 28.10.2020