Получить ссылку для скачивания файла на одном диске, без "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.

нажмите здесь для более подробной информации

Другие вопросы по тегам