【发布时间】:2017-06-30 21:23:51
【问题描述】:
我在 C# 中有一个 WebAPI,我需要通过 POST 加载一个 Document,修改一些参数,并将其保存到 Azure Blob 帐户。
我可以读取文件,我可以修改参数,但是当我将它保存到Azure时,文档保存为原始文件。
/* file es del tipo System.Net.Http.StreamContent que viene en un POST */
byte[] byteArray = await file.ReadAsByteArrayAsync();
MemoryStream docStream = new MemoryStream();
docStream.Write(byteArray, 0, byteArray.Length);
docStream.Seek(0x00000000, SeekOrigin.Begin);
WordprocessingDocument doc = WordprocessingDocument.Open(docStream, true);
MainDocumentPart mainDocumentPart = doc.MainDocumentPart;
var descedants = mainDocumentPart.Document.Body.Descendants<SdtElement>();
var idRef = descedants.Where(c => c.FirstChild.Elements<SdtAlias>().Where(v => v.Val == "Asunto").Count() > 0).FirstOrDefault();
if (idRef != null && user != null)
{
var tNomRef = idRef.Elements<SdtContentRun>().FirstOrDefault().FirstOrDefault();
var textNomRef = (DocumentFormat.OpenXml.OpenXmlLeafTextElement)tNomRef.LastOrDefault();
textNomRef.Text = info.idDocumento;
}
var titRef = descedants.Where(c => c.FirstChild.Elements<SdtAlias>().Where(v => v.Val == "Título").Count() > 0).FirstOrDefault();
if (titRef != null && user != null)
{
var tNomRef = idRef.Elements<SdtContentRun>().FirstOrDefault().FirstOrDefault();
var textNomRef = (DocumentFormat.OpenXml.OpenXmlLeafTextElement)tNomRef.LastOrDefault();
textNomRef.Text = info.nomDocumento;
}
/* Este objeto se encarga de subir el archivo a un Blob Storage de Azure */
CloudBlockBlob blob = imagesContainer.GetBlockBlobReference(xNombre);
docStream.Position = 0;
blob.UploadFromStream(docStream);
docStream.Close();
docStream.Dispose();
【问题讨论】:
-
请阅读Under what circumstances may I add “urgent” or other similar phrases to my question, in order to obtain faster answers? - 总结是这不是解决志愿者的理想方式,并且可能会适得其反。请不要将此添加到您的问题中。
-
好的,感谢您的时间和解释。我将来会这样做。最好的问候。
标签: c# azure asp.net-web-api2 memorystream