我尝试在提供商托管的 APP 中将大文件(超过 3M)上传到 SharePoint 2013 Online(通过传递“StandardTokens”进行 OAuth 身份验证)。我尝试了很多方法,但到目前为止还没有办法工作。
- 使用下面的 SharePoint 客户端模型,但在 SharePoint Online 中,文件大小限制为 3M 左右。其他人也有类似的问题 microsoft.sharepoint.client.file uploadfile = folder.files.add(filecreationinformation); clientcontext.load(上传文件);clientcontext.executequery();
- 尝试根据http://msdn.microsoft.com/en-us/library/ff599489.aspx增加 MaxReceivedMessageSize ,但我无法调用服务器对象模型来使用 SharePoint Online 来完成。试图查找是否可以通过 PowerShell 将设置更改为 SharePoint Online,但在 Windows PowerShell for SharePoint Online cmdlet 中没有为 MaxReceivedMessageSize 公开命令。
我尝试了在Uploading large files to Sharepoint 365中使用 WebDAV 的解决方法。当我通过提供用户名和密码使用基于声明的身份验证时,它可以工作。但是,在提供商托管的 APP 中,我不能使用这种身份验证,需要 OAuth 身份验证工作。我根据http://code.msdn.microsoft.com/officeapps/SharePoint-2013-Use-HTTPS-dc7227a7在 HTTP 标头中添加了“授权”、“承载”+ accessToken 。它适用于 Web 服务调用,但不适用于 WebDAV 调用。这是代码。
request.Headers.Add("Authorization", "Bearer " + accessToken);
我在客户端模型中尝试了 Microsoft.SharePoint.Client.File.SaveBinaryDirect()。有许多帖子表明 SaveBinaryDirect() 不起作用,因为 cookie 附加到请求太晚了。我在 SaveBinaryDirect() 上收到 http 403 错误。“917656;访问被拒绝。在此位置打开文件之前,您必须先浏览网站并选择自动登录选项。”
基本上,我尝试了上面的四种方法,但都失败了。在 APP 中将一点点大文件 (3M) 上传到 SharePoint 2013 Online 是一种常见的情况,但我还没有解决方案。你能帮我找到出路吗?