使用 ReactJs 以编程方式在 Sharepoint 上上传文件
Programmatically upload file on Sharepoint using ReactJs
我是 ReactJS 的新手,我需要社区帮助来解决我的问题陈述。
问题陈述:- 我想使用 ReactJS 在 Sharepoint 中上传图像文件,作为响应我想要返回图像的 Sharepoint URL,以便我可以保存在数据库中以在我的应用程序页面中显示这些图像。
我正在开发一个网络应用程序,这个应用程序在 teams as 选项卡下 运行。
这是一个参考[=37=]我已经试过了,但我无法成功实施。
执行此操作后出现以下错误:-
TypeError: 无法读取未定义的 属性 'getFolderByServerRelativeUrl'
Settings.uploadFileFromControl
src/components/Settings.jsx:656
653 | //var files = this._input.files;
654 | //var file = files[0];
655 | //Upload a file to the SharePoint Library`enter code here`
> 656 | sp.web.getFolderByServerRelativeUrl(this.props.context.pageContext.web.serverRelativeUrl)
| ^ 657 | //sp.web.getFolderByServerRelativeUrl(this.props.context.pageContext.web.serverRelativeUrl + "/MyDocs")
658 | .files.add(file.name, file, true)
659 | .then((data) =>{
查看已编译
FileReader.reader.onloadend
src/components/Settings.jsx:603
600 |
601 | //console.log('fileVar[i].name ' + reader.fileName);
602 |
> 603 | this.uploadFileFromControl(fileVar[i]);
| ^ 604 |
605 | logoImages.push({image: reader.result, name: reader.fileName});
606 | this.setState({eventLogoImageUrl: JSON.stringify(logoImages)});
我不明白这种天气 sp.web 是否可以在团队应用程序下工作?
请帮忙
提前致谢。
出现这个问题的原因应该是pnp js没有正确导入
npm install sp-pnp-js --save
运行这个命令在你的命令栏里。
官方示例:
https://pnp.github.io/pnpjs/sp/files/#adding-files
如果您需要进一步的帮助,请分享 tsx 文件中的完整代码。
基本上你会收到错误,因为你的 getFolderByServerRelativeUrl 没有得到任何值或未定义
您需要像这样使用函数并在单击按钮时调用此函数
private uploadFileFromControl() {
//Get the file from File DOM
var files = this._input.files;
var file = files[0];
//Upload a file to the SharePoint Library
var url = this.props.context.pageContext.web.serverRelativeUrl;
pnp.sp.web.getFolderByServerRelativeUrl( url+ "/FormServerTemplates")
.files.add(file.name, file, true)
.then((data) => {
alert("File uploaded sucessfully");
})
.catch((error) => {
alert("Error is uploading");
});
}
在渲染中使用 html 渲染代码
return (
<div className={ styles.maincontainer }>
<input type="file" ref={(elm) => { this._input = elm; }}></input>
<p>
<button onClick={() => this.uploadFileFromControl()} >
Upload
</button>
</p>
</div>
);
运行 这个命令
npm 安装 sp-pnp-js --保存
导入 sp-pnp-js
从 'sp-pnp-js' 导入 * 作为 pnp;
我是 ReactJS 的新手,我需要社区帮助来解决我的问题陈述。
问题陈述:- 我想使用 ReactJS 在 Sharepoint 中上传图像文件,作为响应我想要返回图像的 Sharepoint URL,以便我可以保存在数据库中以在我的应用程序页面中显示这些图像。 我正在开发一个网络应用程序,这个应用程序在 teams as 选项卡下 运行。
这是一个参考[=37=]我已经试过了,但我无法成功实施。
执行此操作后出现以下错误:-
TypeError: 无法读取未定义的 属性 'getFolderByServerRelativeUrl' Settings.uploadFileFromControl src/components/Settings.jsx:656
653 | //var files = this._input.files;
654 | //var file = files[0];
655 | //Upload a file to the SharePoint Library`enter code here`
> 656 | sp.web.getFolderByServerRelativeUrl(this.props.context.pageContext.web.serverRelativeUrl)
| ^ 657 | //sp.web.getFolderByServerRelativeUrl(this.props.context.pageContext.web.serverRelativeUrl + "/MyDocs")
658 | .files.add(file.name, file, true)
659 | .then((data) =>{
查看已编译 FileReader.reader.onloadend src/components/Settings.jsx:603
600 |
601 | //console.log('fileVar[i].name ' + reader.fileName);
602 |
> 603 | this.uploadFileFromControl(fileVar[i]);
| ^ 604 |
605 | logoImages.push({image: reader.result, name: reader.fileName});
606 | this.setState({eventLogoImageUrl: JSON.stringify(logoImages)});
我不明白这种天气 sp.web 是否可以在团队应用程序下工作?
请帮忙 提前致谢。
出现这个问题的原因应该是pnp js没有正确导入
npm install sp-pnp-js --save
运行这个命令在你的命令栏里。
官方示例:
https://pnp.github.io/pnpjs/sp/files/#adding-files
如果您需要进一步的帮助,请分享 tsx 文件中的完整代码。
基本上你会收到错误,因为你的 getFolderByServerRelativeUrl 没有得到任何值或未定义
您需要像这样使用函数并在单击按钮时调用此函数
private uploadFileFromControl() {
//Get the file from File DOM
var files = this._input.files;
var file = files[0];
//Upload a file to the SharePoint Library
var url = this.props.context.pageContext.web.serverRelativeUrl;
pnp.sp.web.getFolderByServerRelativeUrl( url+ "/FormServerTemplates")
.files.add(file.name, file, true)
.then((data) => {
alert("File uploaded sucessfully");
})
.catch((error) => {
alert("Error is uploading");
});
}
在渲染中使用 html 渲染代码
return (
<div className={ styles.maincontainer }>
<input type="file" ref={(elm) => { this._input = elm; }}></input>
<p>
<button onClick={() => this.uploadFileFromControl()} >
Upload
</button>
</p>
</div>
);
运行 这个命令
npm 安装 sp-pnp-js --保存
导入 sp-pnp-js
从 'sp-pnp-js' 导入 * 作为 pnp;