Usando visualizações de arquivo
Inserindo uma visualização de arquivo em um iFrame
É possível visualizar uma ampla gama de arquivos em seu navegador sem usar um aplicativo especial. Entre os arquivos com suporte, você pode exibir PDF, JPG, MP4 etc.
Para visualizar um arquivo em um iframe
, você precisa
- Chame o ponto de extremidade de visualização driveItem do Graph e obtenha o GetUrl
- Use a URL em um iFrame (ou até mesmo abri-la em uma nova página)
Obter a url de visualização usando o Graph
O Microsoft Graph oferece o seguinte ponto de extremidade para visualizar um arquivo:
POST https://graph.microsoft.com/{version}/drives/{driveId}/items/{itemId}/preview
Version
é a versão do Graph. Por exemplo, "v1.0"- A
driveId
é ID do Contêiner (começa com "b!") - O
itemId
, que é a ID do item de unidade.
Se você estiver usando o SDK do Microsoft Graph C#, o código será semelhante ao seguinte:
ItemPreviewInfo preview = await graphServiceClient.Drives[driveId].Items[itemId]
.Preview()
.Request()
.PostAsync();
A resposta JSON inclui as URLs de visualização de cada documento. Use o obtido em getUrl
:
{
"getUrl": "https://www.onedrive.com/embed?foo=bar&bar=baz",
"postParameters": "param1=value¶m2=another%20value",
"postUrl": "https://www.onedrive.com/embed_by_post"
}
Dica
É possível remover a faixa na parte superior adicionando o parâmetro nb=true
à URL obtida. E.g. https://contoso.sharepoint.com/restOfUrl/embed.aspx?param1=value&nb=true
Cuidado
Atualmente , getUrl contém um parâmetro com um token criptografado que só pode ser usado com seu aplicativo. No entanto, isso pode mudar em um futuro próximo e você pode ser solicitado a adicionar um cabeçalho de auth como você faz com outras solicitações.
Usar a URL em um iframe
A próxima etapa é simplesmente usar a URL obtida na etapa anterior em uma nova página. Você pode ter um ponto de extremidade em seu aplicativo que serve uma nova página como semelhante a esta:
<!DOCTYPE html>
<html>
<body>
<h2>Preview</h2>
<p>Preview of {file name}:</p>
<iframe src="{preview URL}" height="200" width="300" id="preview" title="Iframe Example"></iframe>
</body>
</html>
Carregar a visualização do documento dinamicamente
Se você pretende carregar dinamicamente a visualização na mesma página sem deixá-la, poderá obter um erro CORS se tentar acessar o ponto de extremidade do Microsoft Graph diretamente de um script de sua página.
Uma maneira de resolver esse problema é criar um ponto de extremidade em seu aplicativo que faz a solicitação e retorna a url.
Por exemplo, seu código do lado do servidor deve primeiro obter a url de visualização do documento:
[HttpGet]
[AuthorizeForScopes(Scopes = new string[] { "Files.Read.All" })]
public async Task<ActionResult<string>> GetPreviewUrl(string driveId, string itemId)
{
// Obtain tokens for the the request
// Use the function created in the first step
return url + "&nb=true"; //Use nb=true to suppress banner
}
Em seguida, o aplicativo do lado do cliente pode usar a API do fetch
navegador para solicitar e injetar a url no iframe
:
async function preview(driveId, itemId) {
const url = `/GetPreviewUrl?driveId=${driveId}&itemId=${itemId}`;
const response = await fetch(url, {
credentials: 'include',
}).then(response => response.text());
document.getElementById('preview').src = response + "&nb=true"; //Use nb=true to suppress banner
}