2015-01-04 26 views
1

我正在将图像上传到documentDb。我将文件名分配给slug属性。我使用在上传过程中获得的media link来检索附件。如何将文件名分配给Azure DocumentDB附件?

我的期望是,当我检索附件,我会得到我的文件名。但相反,Azure将slug返回为空。我已经加倍检查检索到的附件的内容是否正确。

两个问题:

  1. 我是否滥用slug财产?
  2. 我应该在哪里分配自定义属性?

这里是我的代码:

public async Task<string> UploadAttachment(string selfLinkId, Stream mediaStream, string contentType, string fileName) 
{    
    Document foundDocument = (await _client.ReadDocumentAsync(selfLinkId)).Resource; 
    ResourceResponse<Attachment> resp = await _client.CreateAttachmentAsync(foundDocument.AttachmentsLink, mediaStream, new MediaOptions { ContentType = contentType, Slug = fileName, }); 
    string mediaLink = resp.Resource.MediaLink; 
    return mediaLink; 
} 

public async Task<MediaResponse> GetAttachment(string mediaLink) 
{ 
    //Use DocumentClient to read the Media content 
    MediaResponse content = await _client.ReadMediaAsync(mediaLink); 
    return content; 
} 

回答

0

确定的内容类型被设定是否正确?

根据this documentation,仅当上传原始媒体(这是您的场景)时才需要slug和contentype。另外,您是否检查过天蓝色门户中的文档资源管理器以查看文档及其附件的存储方式?那里显示的值是你期望的值吗?

按照相同的文档,这是原始媒体的POST应该如何看起来像一个例子:

POST https://contosomarketing.documents.azure.com/dbs/hUwBcw==/colls/hUwBc+gfDX4=/docs/hUwBc+gfDX4DAAAAAAAAAA==/attachments HTTP/1.1 
x-ms-date: Thu, 14 Aug 2014 22:40:25 GMT 
authorization: type%3dmaster%26ver%3d1.0%26sig%3dza46lCo9nNr0%2fGMjryG8S%2b26ZsFABUYPlW3ebq26nDg%3d 
x-ms-version: 2014-08-21 
Content-Type: image/png 
Slug: brush.png 
Content-Length: 244 
相关问题