在尝试上传文件到SharePoint联机时,通过SharePointClient
upload
远程上传文件时,遇到的文件大小限制为2mb。在我的搜索中,似乎人们已经用PowerShell
来克服这个限制,但是有没有办法在.Net C#中使用原生SharePointClient
包来克服这个限制?这里是我现有的代码示例:SharePoint Online,使用SharePointClient上传超过2mb的文件
using (var ctx = new Microsoft.SharePoint.Client.ClientContext(httpUrl))
{
ctx.Credentials = new Microsoft.SharePoint.Client.SharePointOnlineCredentials(username, passWord);
try
{
string uploadFilename = string.Format(@"{0}.{1}", string.IsNullOrWhiteSpace(filename) ? submissionId : filename, formatExtension);
logger.Info(string.Format("SharePoint uploading: {0}", uploadFilename));
new SharePointClient().Upload(ctx, sharePointDirectoryPath, uploadFilename, formatData);
}
}
我从下面的网站,你可以使用ContentStream只是不知道如何映射到SharePointClient
(如果有的话)阅读:
https://msdn.microsoft.com/en-us/pnp_articles/upload-large-files-sample-app-for-sharepoint
UPDATE:
每建议的解决方案我现在有:
public void UploadDocumentContentStream(ClientContext ctx, string libraryName, string filePath)
{
Web web = ctx.Web;
using (FileStream fs = new FileStream(filePath, FileMode.Open))
{
FileCreationInformation flciNewFile = new FileCreationInformation();
// This is the key difference for the first case - using ContentStream property
flciNewFile.ContentStream = fs;
flciNewFile.Url = System.IO.Path.GetFileName(filePath);
flciNewFile.Overwrite = true;
List docs = web.Lists.GetByTitle(libraryName);
Microsoft.SharePoint.Client.File uploadFile = docs.RootFolder.Files.Add(flciNewFile);
ctx.Load(uploadFile);
ctx.ExecuteQuery();
}
}
仍然不能正常工作,但会在成功时再次更新。当前错误是:
Could not find file 'F:approot12-09-2017.zip'.
FINALLY
我正在使用的文件从Amazon S3这样的解决办法是把我的字节数据和流式传输到呼叫:
public void UploadDocumentContentStream(ClientContext ctx, string libraryName, string filename, byte[] data)
{
Web web = ctx.Web;
FileCreationInformation flciNewFile = new FileCreationInformation();
flciNewFile.ContentStream = new MemoryStream(data); ;
flciNewFile.Url = filename;
flciNewFile.Overwrite = true;
List docs = web.Lists.GetByTitle(libraryName);
Microsoft.SharePoint.Client.File uploadFile = docs.RootFolder.Files.Add(flciNewFile);
ctx.Load(uploadFile);
ctx.ExecuteQuery();
}
谢谢!我明天会试一试,让你知道它是如何发展的。 –
有一点需要记住,30分钟后用这种方法发生超时。微软的指导是使用文件流上传文件高达10MB,但你可以逃避更多。如果您仍然遇到问题,请告知我,我将为“开始”,“继续”,“完成”上传方法提供一个示例。 – groveale
嗨,所以我已经尝试了你建议的稍微修改过的版本。请参阅上面的更新。但是,我从SharePoint中看到以下错误:SharePoint错误:找不到文件'F:approot12-09-2017.zip'。我上传的文件是“12-09-2017.zip”。 “F:approot”从哪里来? –