将文档从Windows应用商店应用上载到SharePoint 2013文档库

时间:2015-06-03 11:06:02

标签: c# asp.net sharepoint-2010 sharepoint-2013

我需要使用C#& amp;文档将文档上传到SharePoint 2013文档库(可以通过Rest Api / other)。还检索当前上载的文档的唯一ID /位置。请向我推荐一种推荐方式。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

以下是上传文件并使用服务器响应获取可用于获取位置的文档ID的示例,但如果您浏览JSON,则响应也可能包含文档的URL。 / p>

FileOpenPicker picker = new FileOpenPicker();
picker.SuggestedStartLocation = PickerLocationId.PicturesLibrary;
picker.ViewMode = PickerViewMode.Thumbnail;
// Filter to include a sample subset of file types.
picker.FileTypeFilter.Clear();
picker.FileTypeFilter.Add(".bmp");
picker.FileTypeFilter.Add(".png");
picker.FileTypeFilter.Add(".jpeg");
picker.FileTypeFilter.Add(".jpg");
// Open the file picker.
StorageFile path = await picker.PickSingleFileAsync();
if (path != null)
{
     string url = "https://YourSite.com/Subsite/";
     HttpClient client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true });
     client.BaseAddress = new System.Uri(url);
     client.DefaultRequestHeaders.Clear();
     client.DefaultRequestHeaders.Add("Accept", "application/json;odata=verbose");
     client.DefaultRequestHeaders.Add("X-RequestDigest", digest);
     client.DefaultRequestHeaders.Add("X-HTTP-Method", "POST");
     client.DefaultRequestHeaders.Add("binaryStringRequestBody", "true");
     IRandomAccessStream fileStream = await path.OpenAsync(FileAccessMode.Read);
     var reader = new DataReader(fileStream.GetInputStreamAt(0));
     await reader.LoadAsync((uint)fileStream.Size);
     Byte[] content = new byte[fileStream.Size];
     reader.ReadBytes(content);
     ByteArrayContent file = new ByteArrayContent(content);
     HttpResponseMessage response = await client.PostAsync("_api/web/lists/getByTitle(@TargetLibrary)/RootFolder/Files/add(url=@TargetFileName,overwrite='true')?@TargetLibrary='Project Photos'&@TargetFileName='TestUpload.jpg'", file);
     response.EnsureSuccessStatusCode();
     if (response.IsSuccessStatusCode)
     { 
        //Get file ID from SharePoint
        var info = response.Content.ReadAsStringAsync();
        JsonObject d = JsonValue.Parse(info.Result).GetObject();
        string id = d["d"].GetObject()["ListItemAllFields"].GetObject().GetNamedValue("ID").Stringify();
     }
 }

'digest'是一个字符串,您必须从SharePoint检索以验证任何进一步的REST调用。您可以在此处找到有关如何为Store App for SharePoint执行此操作和任何其他常见任务的示例:

https://arcandotnet.wordpress.com/2015/04/01/sharepoint-2013-rest-services-using-c-and-the-httpclient-for-windows-store-apps/