求助:SharePoint CSOM在Web API中上传文件提示SaveBinaryDirect方法不存在
解决Web API中CSOM无
SaveBinaryDirect方法的问题 嘿,这个坑我踩过!问题出在你Web API里用的Portable版CSOM程序集——Microsoft.SharePoint.Client.Portable和配套的Runtime库是为跨平台场景设计的,裁剪了一些依赖特定系统的API,SaveBinaryDirect就是被砍掉的那个,而你控制台用的完整版CSOM(Microsoft.SharePoint.Client)才包含这个方法。
别担心,我们可以用Portable版支持的FileCreationInformation来替代,实现完全相同的上传功能。把你原来的代码改成这样就行:
using (var filestream = new FileStream(filename, FileMode.Open)) { context.Load(list.RootFolder); context.ExecuteQuery(); var fileinfo = new FileInfo(filename); var result = Path.GetFileName(filename); var fileUrl = String.Format("{0}/{1}/", list.RootFolder.ServerRelativeUrl, caseno); var targetFileUrl = fileUrl + result; // 替换SaveBinaryDirect的核心代码 var fileCreationInfo = new FileCreationInformation { ContentStream = filestream, Url = targetFileUrl, Overwrite = true // 对应原方法里的true参数,允许覆盖已有文件 }; Microsoft.SharePoint.Client.File newFile = list.RootFolder.Files.Add(fileCreationInfo); context.ExecuteQuery(); }
这个方案的逻辑和你原来的控制台代码完全一致:通过文件流读取本地文件,指定目标SharePoint路径,上传并覆盖已有文件。而且FileCreationInformation是Portable版CSOM原生支持的API,不会再出现方法不存在的错误。
内容的提问来源于stack exchange,提问作者user11099777
相关产品推荐
相关产品推荐

