服务器事件更改了Sharepoint上传的文件名.如何找回它
本文关键字:文件名 何找回 事件 Sharepoint 服务器 | 更新日期: 2023-09-27 18:15:37
我正在使用以下代码上传文件到Sharepoint服务器:
ClientOM.File uploadFile = null;
try {
string fileRef = serverRelativeURL + msg.Message.FileName;
FileCreationInformation fileCreationInformation = new FileCreationInformation() {
Content = msg.Content,
Url = fileRef,
Overwrite = true
};
uploadFile = _currentList.RootFolder.Files.Add(fileCreationInformation);
_currentContext.ExecuteQuery();
和文件上传。但在服务器上,我们有一个事件,将一些随机字符串添加到文件标题。所以fileRef在上传后是不相关的。
我们需要设置文件的Author。为此,我们必须检索文件并更新此属性。我使用下面的示例:
string fileName = serverRelativeURL + msg.Message.FileName;
uploadFile = _currentContext.Web.GetFileByServerRelativeUrl(fileName);
_currentContext.Load(uploadFile);
uploadFile.ListItemAllFields["Author"] = _currentUser;
uploadFile.ListItemAllFields["Editor"] = _currentUser;
uploadFile.ListItemAllFields.Update();
_currentContext.ExecuteQuery();
和ExecuteQuery()我得到一个异常"文件未找到"。但是如果我从Sharepoint复制路径(随机字符串),一切工作正常。
所以问题是:有没有其他的方法来检索文件?比如通过id ?因为当我们上传文件时,实例"uploadFile"并没有太多有用的信息
方法一:跟踪文件名,然后使用此代码直接检索它。
public FileInformation GetFileFromAttachment(int itemId, string filename)
{
FileInformation file = null;
//continue here
if (new FileInfo(filename).Name != null)
{
CSOMUtils.ExecuteInNewContext(QueryConfig.siteUrl, delegate(ClientContext clientContext)
{
clientContext.Credentials = QueryConfig.credentials;
clientContext.Load(clientContext.Web, l => l.ServerRelativeUrl);
clientContext.ExecuteQuery();
List oList = clientContext.Web.Lists.GetByTitle(ListName);
clientContext.ExecuteQuery();
string url = string.Format("{0}/Lists/{1}/Attachments/{2}/{3}",
clientContext.Web.ServerRelativeUrl,
ListName,
itemId,
filename);
var f = clientContext.Web.GetFileByServerRelativeUrl(url);
clientContext.Load(f);
clientContext.ExecuteQuery();
file = File.OpenBinaryDirect(clientContext, f.ServerRelativeUrl);
});
}
return file;
}
方法2:您可以使用ServerRelativeUrl来获取包含所有附件的文件夹。https://msdn.microsoft.com/library/office/microsoft.sharepoint.client.folder.serverrelativeurl.aspxhttps://sharepoint.stackexchange.com/questions/132008/reliably-get-attachments-for-list-item