десериализовать данные из ответа я получаю реагировать - PullRequest
0 голосов
/ 12 апреля 2020

Я получаю сериализацию данных, я думаю, что это вызывает проблему с запросом POST, он получает успех, но PDF или любой файл, когда я пытаюсь просмотреть из источника, он генерирует ошибку или пустое изображение.

Как отменить сериализацию данных, которые я получаю, это ниже данных enter image description here

И это функция

onFileChangeHandler = (e) => {
        this.setState({
          files: e.target.files[0].name
        });
    };

<input type="file" name="Upload" onChange={this.onFileChangeHandler.bind(this)}/>

с этим компонентом ввода. Также здесь я добавляю этот файл с вызовом API к источнику. Где я должен десериализовать

if(this.state.files !== undefined){
        try {
          sp.web.lists.getByTitle(this.props.listName).items.add({
            Title: item.Title
        }).then(r => {
            // this will add an attachment to the item we just created to push t sharepoint list
            r.item.attachmentFiles.add(this.state.files, "Here is some file content.");
        });

Я думаю, что из-за сериализации данных мой файл вложения показывает сбой или пустой. Я искал inte rnet и думал, что десериализация решит это. Кто-нибудь может мне с этим помочь? десериализация вышеуказанных данных.

1 Ответ

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

Вот демонстрационный пример кода для добавления файла pdffile во вложение элемента списка в веб-части React SPFX:

import * as React from 'react';
import styles from './HelloWorld.module.scss';
import { IHelloWorldProps } from './IHelloWorldProps';
import { escape } from '@microsoft/sp-lodash-subset';
import { sp } from "@pnp/sp/presets/all";

export interface IMyState {
  pdfFile: File
}

export default class HelloWorld extends React.Component<IHelloWorldProps,IMyState> {

  public constructor(props: IHelloWorldProps, state: IMyState) {
    super(props);
    this.state = {
      pdfFile: null
    }
  };
  handleChange(selectorFiles: FileList) {
    this.setState({ pdfFile: selectorFiles[0] });
  }
  Submit() {
    console.log(this);
    if (this.state.pdfFile !== undefined) {
      try {
        sp.web.lists.getByTitle("list1").items.add({
          Title: "New Item"
        }).then(r => {
          // this will add an attachment to the item we just created to push t sharepoint list
          r.item.attachmentFiles.add(this.state.pdfFile.name, this.state.pdfFile).then(result=>{
            console.log(result);
          });
        })
      } catch{

      }
    }
  }
  public render(): React.ReactElement<IHelloWorldProps> {

    return <div><input type="file" onChange={(e) => this.handleChange(e.target.files)} />
    <button onClick={(e) => this.Submit()}>Submit</button></div>

  }
}

enter image description here

...