2015-06-03 79 views

回答

2

以下是上传文件并使用服务器响应获取可用于获取位置的文档的ID的示例,尽管如果您通过JSON进行戳动,响应也可能包含文档的URL。

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([email protected],overwrite='true')[email protected]='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(); 
    } 
} 

“消化”是你必须从SharePoint检索验证任何进一步的REST调用的字符串。你可以找到一个商店App如何做到这一点的例子,任何其他共同任务为SharePoint这里:

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

+0

你或许应该标题改成问题引用,这是Windows应用商店的应用程序。对于非商店代码,完成此任务的方法要简单得多。 –

+0

应用程序将如何管理SharePoint访问凭据?我是否需要添加一些需要凭据的.dll或手动指定凭证,或者它如何? – Dev

+0

默认情况下,它将使用当前登录的用户,但您也可以在创建HttpClient时指定凭据。在我提供的例子中,它将使用当前登录的用户。 –

相关问题