2
我有以下代碼。我已驗證GetMediaItemByID正在返回預期的媒體項目,並且MIME類型爲「application/pdf」。但是,當我打開調用此代碼的控制器時,Acrobat會抱怨生成的PDF文件無效。我在文本編輯器中查看得到的PDF文件,它是二進制數據。任何想法,我錯了?從WebAPI調用返回Sitecore媒體項目
public HttpResponseMessage RetrieveDocument(ID mediaID)
{
MediaItem file = GetMediaItemByID(mediaID);
Stream stream = file.GetMediaStream();
MemoryStream ms = new MemoryStream();
stream.CopyTo(ms);
var result = new HttpResponseMessage(HttpStatusCode.OK) { Content = new ByteArrayContent(ms.GetBuffer()) };
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = file.Name + "." + file.Extension };
result.Content.Headers.ContentType = new MediaTypeHeaderValue(file.MimeType);
return result;
}
你是正確的,ms.GetBuffer()是問題。我一直認爲它們是一樣的,但是閱讀它就會發現它們有所不同。 –