当文件名中有#符号时,Sharepoint REST API GetFileByServerRelativeUrl

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当文件名中有#符号时,Sharepoint REST API GetFileByServerRelativeUrl相关的知识,希望对你有一定的参考价值。

当文件名中有#符号时,我在使用REST API从Sharepoint获取文件时遇到问题,我将其转义为%23,但响应是找不到文件(404)。看:https://dev.office.com/blogs/upcoming-changes-to-sharepoint-and-onedrive-for-business-apis-to-support-and-in-file-names

并且他们解释说GetFileByServerRelativeUrl API不支持#和%符号,但是没有解释REST API中如何使用文件名中包含#的文件。

谢谢

答案

事实上,即使微软已经有introduced a support for special characters,当文件名包含SP.Web.getFileByServerRelativeUrl method字符时#失败(无论#是否被转义为%23

但您可以考虑使用以下端点来检索文件属性:

Url: http://<sitecollection>/<site>/_api/web/folders/getbyurl(folderrelativeurl)/files/getByUrl(url)
Method: GET

例如:

var folderUrl = "Shared Documents";
var fileName = "Guide #123.docx";

var requestUrl = `${_spPageContextInfo.webAbsoluteUrl}/_api/web/folders/getbyurl('${encodeURIComponent(folderUrl)}')/files/getByUrl('${encodeURIComponent(fileName)}')`;
$.getJSON(requestUrl)
.then(function(data){
    console.log(data.Name);
})
.fail(function(error){
    console.log(error.responseText);
});

以上是关于当文件名中有#符号时,Sharepoint REST API GetFileByServerRelativeUrl的主要内容,如果未能解决你的问题,请参考以下文章

当其他包中有Java文件时,如何编译多个Java文件?

当代码编译良好时,Resharper“无法解析符号”[重复]

将 Excel 2007 中的文本写入 Sharepoint 站点上的 .txt 文件会导致运行时错误“76”找不到路径

如何直接从 res/raw 文件夹播放音频文件?

如果 SharePoint 上的一个特定文件发生更改,则触发操作

SharePoint安全地显示mht文件