Конвертировать файл в MS Graph API на SPFx вернуть не определено - PullRequest
1 голос
/ 10 января 2020

Когда я пытаюсь загрузить файл из API Graph с доступом к диску или сайтам с javascript на SPFx, это возвращение не определено.

мой код веб-части:

import { Version } from '@microsoft/sp-core-library';
import {
  BaseClientSideWebPart,
  IPropertyPaneConfiguration,
  PropertyPaneTextField
} from '@microsoft/sp-webpart-base';
import * as strings from 'Docx2PdfWebPartStrings';

import { MSGraphClient } from '@microsoft/sp-http';


export interface IDocx2PdfWebPartProps {
  description: string;
}

export default class Docx2PdfWebPart extends BaseClientSideWebPart<IDocx2PdfWebPartProps> {
  public async  render(): Promise<void> {
    const client: MSGraphClient = await this.context.msGraphClientFactory.getClient();
    var tenant = 'test';
    var siteID = `${tenant}.sharepoint.com,12adb250-26f4-4dbb-9545-71d029bad763,8fdc3f56-2d6d-42d9-9a4d-d684e73c341e`;
    var fileID = '01MBNFB7EIQLARTATNE5G3XDJNYBD2A3IL';
    var fileName = 'Test.docx';

    //This work
    var site = await client.api(`/sites/${tenant}.sharepoint.com:/sites/dev:/drive?$select=id,weburl`).get();
    console.log(site);

    try {
      //This not work

      var fileFromDrive = await client.api(`/drive/root:/${fileName}:/content?format=pdf`).get();
      console.log(fileFromDrive);
      var fileFromSite = await client.api(`/sites/${siteID}/drive/items/${fileID}/content?format=pdf`).get();
      console.log(fileFromSite);
    } catch (error) {
      console.log(error);
    }

    this.domElement.innerHTML = `<h1>Hola Mundo</h1>`;
  }

  protected get dataVersion(): Version {
    return Version.parse('1.0');
  }

  protected getPropertyPaneConfiguration(): IPropertyPaneConfiguration {
    return {
      pages: [
        {
          header: {
            description: strings.PropertyPaneDescription
          },
          groups: [
            {
              groupName: strings.BasicGroupName,
              groupFields: [
                PropertyPaneTextField('description', {
                  label: strings.DescriptionFieldLabel
                })
              ]
            }
          ]
        }
      ]
    };
  }
}

chrome консольный журнал enter image description here

Но когда я использую Graph Explorer, он работает правильно Graph explorer capture

Это мое пакетное решение. json

{
  "$schema": "https://developer.microsoft.com/json-schemas/spfx-build/package-solution.schema.json",
  "solution": {
    "name": "docx-2-pdf-client-side-solution",
    "id": "f4b5db4f-d9ff-463e-b62e-0cc9c9e94089",
    "version": "1.0.0.0",
    "includeClientSideAssets": true,
    "skipFeatureDeployment": true,
    "isDomainIsolated": false,
    "webApiPermissionRequests": [
      {
        "resource": "Microsoft Graph",
        "scope": "Sites.Read.All"
      },
      {
        "resource": "Microsoft Graph",
        "scope": "Files.Read.All"
      },
      {
        "resource": "Microsoft Graph",
        "scope": "Files.ReadWrite.All"
      },
      {
        "resource": "Microsoft Graph",
        "scope": "Sites.ReadWrite.All"
      }
    ]
  },
  "paths": {
    "zippedPackage": "solution/docx-2-pdf.sppkg"
  }
}

Я использую следующие статьи https://docs.microsoft.com/en-us/graph/api/driveitem-get-content?view=graph-rest-1.0&tabs=javascript https://docs.microsoft.com/en-us/graph/api/driveitem-get-content-format?view=graph-rest-1.0&tabs=javascript#code -try-1

1 Ответ

0 голосов
/ 05 апреля 2020

Попробуйте использовать свойство обратного вызова вместо await:

client.api(`/drive/root:/${fileName}:/content?format=pdf`).get((err, response) => console.log("your response:", err, response));
...