2016-11-01 4 views
0

В документации о Upload, эти параметрах запроса перечислены:Microsoft Graph: загрузка файлов в общую библиотеку вместо библиотеки пользователя?

PUT /me/drive/items/{parent-id}:/{filename}:/content 
PUT /me/drive/root:/{parent-path}/{filename}:/content 
PUT /me/drive/items/{parent-id}/children/{filename}/content 
PUT /groups/<id>/drive/items/<parent-id>/children/<filename>/content 

В документации о возобновляемой загрузке, Create an upload session показывают следующие варианты:

POST /me/drive/root:/{path-to-item}:/createUploadSession 
POST /me/drive/items/{parent-item-id}:/{filename}:/createUploadSession 

Что делать, если я должен загрузить на другие (не «я»)? Например, общая библиотека по умолчанию (https://mycompany.sharepoint.com/Shared%20Documents), что для любого другого дельфина, кроме загрузки, сказано в документации можно получить следующим образом:

/drives/{drive-id}/items/{item-id} 

Итак, мой вопрос: Можно ли загрузить в «/ Shared Документы "? Если да, то какой правильный синтаксис для PUT (маленький файл) или POST (сеанс загрузки)? Возможно, что-то похожее на это? (Я только что сделал это, и она не работает)

PUT /drives/{drive-id}/items/{parent-id}/{filename}:/content 

или (в случае сеанса загрузки):

POST /drives/{drive-id}/items/{parent-item-id}:/{filename}:/createUploadSession 

Например, в Graph Explorer, ответ на что-то вроде это:

/v1.0/drives/THEDRIVEID/items/THEFOLDERID:/whatever.jpg:/createUploadSession 

был:

{ 
    "error": { 
     "code": "invalidRequest", 
     "message": "A valid path must be provided.", 
     "innerError": { 
      "request-id": "THERETURNEDID", 
      "date": "THERETURNEDDATE" 
     } 
    } 
} 

EDIT: Потому что корень компании также может быть доступен как/диск/корень /, я также пытался (без везения, как в 1.0 и бета):

/drive/root:/whatever.jpg:/createUploadSession 
/drive/root/whatever.jpg:/createUploadSession 

ответ

0

Это возможно, но вам нужно право разрешения приложений, чтобы иметь возможность читать/создавать файлы вне OneDrive пользователя. Вместо запроса Files.ReadWrite вам нужно будет запросить Sites.ReadWrite.All, а затем использовать /v1.0/drive/root:/file.bin:/createUploadSession.

Вы также можете использовать SharePoint Sites API в Microsoft Graph для доступа к библиотекам документов узла сайта (кроме корневого сайта). Однако этот API все еще находится в бета-версии и не должен использоваться в производственных приложениях.

+0

Ницца, он работает !. Мне просто интересно, почему это не согласуется с любой другой функцией API (которая поддерживает запросы типа/drives/the_drive_id/...) – horacioj

+0

Он должен работать, но есть ошибка при обработке/drives/{drive_id}, что не позволяет синтаксису пути работать. Мы работаем над этим. –

Смежные вопросы