如何使用 sp.web (SPFX) 获取文档库中文件的 URL
How to get the URL of a file in a document library using sp.web (SPFX)
我需要获取 SharePoint 库(案例文档)中每个单独文件的 URL。目前我正在使用:
sp.web.lists.getByTitle("Case Documents").items.get().then((items: any[]) => {
let returnedItems: IListCItem[] = items.map((item) => { return new ListCItem(item); });
this.setState({
ListCItems: returnedItems,
}, () => {
console.log(this.state.ListCItems);
});
});
// sp.web.lists.getByTitle("Case Documents").items.select("ID","Title","CaseID/Title","CaseID/ID").expand("CaseID").get().then((items: any[]) => {
// let returnedItems: IListCItem[] = items.map((item) => { return new ListCItem(item); });
// console.log(returnedItems);
// this.setState({
// ListCItems: returnedItems,
// });
// });
...获取文件名列表。如您所见,我一直在努力使用注释掉的代码获取查找列。我把它包括在内是为了向您展示我是如何使用的。
谁能告诉我如何获取每个文件的 URL,这样我就可以为正在创建的 Web 部件中的每个文档创建可点击的链接。
我看过:https://github.com/SharePoint/PnP-JS-Core/wiki/Working-With:-Files
但我不清楚。我猜是这样的:
pnp.sp.web.getFolderByServerRelativeUrl("/sites/dev/documents").files.getByName("file.txt").getText().then((text: string) => {});
您甚至可以自己编写 URL。
[siteurl]/[document library name]/[file name with extension]
您可以通过以下方式在 spfx 中获取站点 url:
this.context.pageContext.web.absoluteUrl
您可以将其作为 prop
从您的 webpartname.ts
文件
传递给您的组件
示例演示:
sp.web.lists.getByTitle('MyDoc2').items.select('Id,FileRef').get().then((items:any) => {
items.map((item)=>{
console.log(item.FileRef);
})
})
列 FileRef returns 文件 URL。在 FileRef 的情况下,它应该传递给 getItemsByCAMLQuery 中的扩展。喜欢代码:
const viewFields = `
<ViewFields>
<FieldRef Name='FileRef' />
<FieldRef Name='ID' />
<FieldRef Name='Title' />
</ViewFields>
`;
const queryOptions = `<QueryOptions><ViewAttributes Scope='RecursiveAll'/> </QueryOptions>`;
const camlQuery = '';
sp.web.lists.getByTitle('Documents')
.getItemsByCAMLQuery({
ViewXml: `<View>${viewFields}${camlQuery}${queryOptions}</View>`
}, 'FileRef')
.then(console.log)
.catch(console.log);
请注意 getItemsByCAMLQuery({
ViewXml:<View>${viewFields}${camlQuery}${queryOptions}</View>
}, 'FileRef')
我需要获取 SharePoint 库(案例文档)中每个单独文件的 URL。目前我正在使用:
sp.web.lists.getByTitle("Case Documents").items.get().then((items: any[]) => {
let returnedItems: IListCItem[] = items.map((item) => { return new ListCItem(item); });
this.setState({
ListCItems: returnedItems,
}, () => {
console.log(this.state.ListCItems);
});
});
// sp.web.lists.getByTitle("Case Documents").items.select("ID","Title","CaseID/Title","CaseID/ID").expand("CaseID").get().then((items: any[]) => {
// let returnedItems: IListCItem[] = items.map((item) => { return new ListCItem(item); });
// console.log(returnedItems);
// this.setState({
// ListCItems: returnedItems,
// });
// });
...获取文件名列表。如您所见,我一直在努力使用注释掉的代码获取查找列。我把它包括在内是为了向您展示我是如何使用的。
谁能告诉我如何获取每个文件的 URL,这样我就可以为正在创建的 Web 部件中的每个文档创建可点击的链接。
我看过:https://github.com/SharePoint/PnP-JS-Core/wiki/Working-With:-Files 但我不清楚。我猜是这样的:
pnp.sp.web.getFolderByServerRelativeUrl("/sites/dev/documents").files.getByName("file.txt").getText().then((text: string) => {});
您甚至可以自己编写 URL。
[siteurl]/[document library name]/[file name with extension]
您可以通过以下方式在 spfx 中获取站点 url:
this.context.pageContext.web.absoluteUrl
您可以将其作为 prop
从您的 webpartname.ts
文件
示例演示:
sp.web.lists.getByTitle('MyDoc2').items.select('Id,FileRef').get().then((items:any) => {
items.map((item)=>{
console.log(item.FileRef);
})
})
列 FileRef returns 文件 URL。在 FileRef 的情况下,它应该传递给 getItemsByCAMLQuery 中的扩展。喜欢代码:
const viewFields = `
<ViewFields>
<FieldRef Name='FileRef' />
<FieldRef Name='ID' />
<FieldRef Name='Title' />
</ViewFields>
`;
const queryOptions = `<QueryOptions><ViewAttributes Scope='RecursiveAll'/> </QueryOptions>`;
const camlQuery = '';
sp.web.lists.getByTitle('Documents')
.getItemsByCAMLQuery({
ViewXml: `<View>${viewFields}${camlQuery}${queryOptions}</View>`
}, 'FileRef')
.then(console.log)
.catch(console.log);
请注意 getItemsByCAMLQuery({
ViewXml:<View>${viewFields}${camlQuery}${queryOptions}</View>
}, 'FileRef')