问题描述
我在通过 pnpjs 在线上传图片到 sharepoint 中的图片列时遇到问题 我不知道如何转换图像并上传到共享点列表中的图像列。 我尝试了很多方法(通过将图像转换为 blob、文件数据)没有任何效果。
保留很多这不是列表的附件.. 这是共享点列表中的一个新列(图像) reference image click here
解决方法
看起来图像没有存储在列表中。存储 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>);
};
,
@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