0

我在通过 pnpjs 在线将图像上传到共享点中的图像列时遇到问题我不知道如何转换图像并上传到共享点列表中的图像列。我尝试了很多方法(通过将图像转换为 blob、文件数据)没有任何效果。

请注意,这不是列表的附件。它是共享点列表 参考图像中的一个新列(图像),请单击此处

4

2 回答 2

1

@azarmfa,

图像文件实际上并没有存储在图像字段中。该字段仅引用其位置。您可以先将图像文件上传到库(默认情况下它将是站点资产),然后更新项目,如下所示:

  let list = sp.web.lists.getByTitle("mylinks");

  let json = {
    "fileName": "Search_Arrow.jpg",
    "serverUrl": "https://abc.sharepoint.com",
    "serverRelativeUrl": "/sites/s01/Style%20Library/Images/Search_Arrow.jpg"
  };

  let jsonstr = JSON.stringify(json);

  const i = await list.items.getById(3).update({
    Title: "My New Tit",
    img: jsonstr
  });

BR

于 2021-02-17T07:43:38.007 回答
1

看起来图像未存储在列表中。存储 JSON。因此,您可以将图像上传到站点资产(这是手动设置图像时 sharepoint 所做的),然后将 json 放到字段中。我会尝试这样的事情(假设您使用的是 pnpjs)

import * as React from "react";
import { sp } from "@pnp/sp/presets/all";

// hello world react component
export const HelloWorld = () => {

  const uploadFile = async (evt) => {

    const file: File = evt.target.files[0];

    // upload to the root folder of site assets in this demo
    const assets = await sp.web.lists.ensureSiteAssetsLibrary();
    const fileItem = await assets.rootFolder.files.add(file.name, file, true);

    // bare minimum; probably you'll want other properties as well
    const img = {
      "serverRelativeUrl": fileItem.data.ServerRelativeUrl,
    };

    // create the item, stringify json for image column
    await sp.web.lists.getByTitle("YourListWithImageColumn").items.add({
      Title: "Hello",
      YourImageColumn: JSON.stringify(img)
    });
  };

  return (<div>
    <input type='file' onChange={uploadFile} />
  </div>);
};
于 2021-02-15T00:31:52.573 回答