我在Sharepoint 2013上有一个库,并使用以下代码检索所有参数(在客户端使用angularjs.).
var spListURL = siteURL + "_api/lists/getByTitle%28%27" + docLibName + "%27%29/items";
$http.get(spListURL,
{ headers: {"Accept": "application/json; odata=verbose", } }).success(function (result) {
dfd.resolve(result);
})
.error(function (data, status, headers, config) {
errorFactory.buildError(data, status, headers, ORIGIN_VIEW_NAME);
});
Run Code Online (Sandbox Code Playgroud)
但是,结果不包含文件名或文件URL.我需要创建一个指向该文件的锚链接.它确实包含我添加到List/Lib的自定义参数.
我之前从未使用过SharePoint.客户端代码是angularjs工厂的片段,它正在工作(就js而言是可以理解的).
我不想再使用一个休息呼叫d.result[index].File.__deffered.uri,然后在一个新的空白窗口中打开文档.
谢谢你的帮助.
我想使用REST API在SharePoint文档库中的特定文件夹中获取名为"Pages"的项目
我使用下面的rest API,我可以获取文档库中的所有项目
https:// spsite/_api/web/lists/getByTitle('Pages')/ items
但我还没有找到REST API,我可以在SharePoint文档库中的特定文件夹中获取
谢谢先进的Laleh
我在这件事上不知所措。我有一个用户界面,用于创建和编辑存储在 SharePoint 文档库中的文档。技巧部分是我需要允许用户更新文档没问题,只是使用SPFile.SaveBinary()对吗?
这肯定会更新文件的内容,但不知何故旧文件名和旧扩展名仍然存在,这是一个问题。删除并重新添加列表项也不是解决方案,因为 url 中引用了该项的 id。
我的问题是如何更新 SPFile 项目的扩展名和文件名元数据?
到目前为止,我使用对象库的所有尝试都失败了,我尝试更新下面的字段都没有成功。似乎必须有一种更简单的方法来做到这一点。
SPFile file = item.File;
file.Item[SPBuiltInFieldId.FileLeafRef] = resolvedFileName;
file.Item[SPBuiltInFieldId.FileRef] = "/File/" + resolvedFileName;
file.Item[SPBuiltInFieldId.BaseName] = System.IO.Path.GetFileNameWithoutExtension(resolvedFileName);
file.Item["Name"] = System.IO.Path.GetFileNameWithoutExtension(resolvedFileName);
file.SaveBinary(conduitFile);
file.Update();
Run Code Online (Sandbox Code Playgroud)
[编辑] - 这是我的工作解决方案。
SPFile file = item.File;
string resolvedFileName = item.ID.ToString() + "-" + conduitFileName;
item["Title"] = resolvedFileName;
file.SaveBinary(conduitFile);
file.MoveTo(item.ParentList.RootFolder.Url + "/" + resolvedFileName, true);
file.Item["Name"] = resolvedFileName;
file.Update();
Run Code Online (Sandbox Code Playgroud) 目前我正在使用以下方法来获取服务器相对 URL
function getLibraryUrl(nameOrUrl)
{
var ctx = SP.ClientContext.get_current();
var list = ctx.get_web().get_lists().getByTitle(nameOrUrl);
ctx.load(list,'RootFolder');
ctx.executeQueryAsync(
function(){
var url=list.get_rootFolder().get_serverRelativeUrl();
return url;
},
function(sender, args)
{
});
}
Run Code Online (Sandbox Code Playgroud)
但是,我不想使用异步调用。任何人都可以指导我使用 REST API 获取文档库的服务器相对 URL。
像这样的 /_api/Web/Lists/getByTitle('')/items?$select=File/ServerRelativeUrl&$expand=File
如何使用SharePoint列表中的REST API Post保存文档库查找字段?我尝试过
'docItem':'1;#test'
Run Code Online (Sandbox Code Playgroud)
但是,这是一个错误:
{"error":{"code":" - 1,Microsoft.SharePoint.Client.InvalidClientQueryException","message":{"lang":"en-US","value":"A'PrimitiveValue'节点与非尝试读取导航属性的值时发现了空值;但是,期望"StartArray"节点,"StartObject"节点或具有空值的"PrimitiveValue"节点."}}}错误请求
我们正在为客户构建一个Extranet sharepoint门户.每个客户都有一个网站.网站总数将在2000-3000之间.
当客户端上传新文档时,我需要将文档从SiteCollectionA/SiteA/DocumentLibrary复制到另一个网站集上的另一个全局列表.
我应该创建工作流来复制文档或事件监听器吗?上传后,客户端将被允许更新文档属性,这些更改也必须推送到全局列表中.
我的选择是事件倾听者,因为它更清洁,更便宜,更容易.我不是工作流程的专家,但我认为在2000多个站点上维护/更新/重新发布工作流将更难,然后是事件监听器.
你们有什么感想?
谢谢
sharepoint workflow sharepointdocumentlibrary eventreceiver documentlistener