Получить ссылку для скачивания файла на одном диске, без "content-disposition" в заголовках?
У меня есть файл в моем onedrive. Как я вижу, он позволяет ссылку для совместного использования и встраивание ссылки. Их можно преобразовать в прямую ссылку для скачивания, заменив "остаток" на "скачать". Тем не менее, он вызывает "диалоговое окно загрузки" вместо того, чтобы показывать его прямо в браузере. В любом случае, я могу удалить "расположение контента" из ссылок на скачивание, которые я получаю?
В dropbox это возможно с помощью dl=0. Но, похоже, нет никакого варианта для onedrive.
2 ответа
Попробуйте получить ссылку для "вставки", а не "просмотра", она предоставит вам ссылку для вставки. После замены '/embed?' с '/download.aspx?' в этом URL-адресе этот URL-адрес станет URL-адресом прямой загрузки и не приведет вас на веб-страницу Microsoft. Я знаю, что это хакерское решение, но это единственное решение, которое у меня есть. Приведенный выше ответ SK также является верным для некоторых существующих, однако, downloadUrl, полученный из метаданных, истек очень быстро. Таким образом, вы не можете поместить в статическую HTML-страницу.
Надеюсь, это кому-нибудь поможет.
Вы можете назвать метаданные api.
GET /drive/items/{item-id}
GET /drive/root:/{item-path}
Если запрос выполнен успешно, вы получите ответ, подобный приведенному ниже. item-id
это идентификатор вашего файла
HTTP/1.1 200 OK
Content-type: application/json
{
"id": "0123456789abc",
"name": "example.xlsx",
"eTag": "123918093j1lk2jlkda",
"cTag": "k1ml4klkasljasidj1l2j34lkaslz",
"createdBy": { "user": { "id": "1234", "displayName": "Ryan Gregg" } },
"createdDateTime": "string (timestamp)",
"lastModifiedBy": { "user": { "id": "1234", "displayName": "Ryan Gregg" } },
"lastModifiedDateTime": "string (timestamp)",
"size": 1234,
"webUrl": "http://onedrive.com/...",
"parentReference": { "driveId": "12345", "id": "root", "path": "/drive/root:" },
"folder": { "childCount": 4 }
}
Ответ на самом деле усечен. Но вы можете попробовать этот API, и вы получите все детали в ответе. Для загрузки файла вы найдете
@content.downloadUrl in the response.