Sto tentando di restituire un'immagine da una route del server, ma ne ottengo una che è 0 byte. Sospetto che abbia qualcosa a che fare con il modo in cui utilizzo lo MemoryStream
. Ecco il mio codice:Non riceve dati dalla route C#
[HttpGet]
[Route("edit")]
public async Task<HttpResponseMessage> Edit(int pdfFileId)
{
var pdf = await PdfFileModel.PdfDbOps.QueryAsync((p => p.Id == pdfFileId));
IEnumerable<Image> pdfPagesAsImages = PdfOperations.PdfToImages(pdf.Data, 500);
MemoryStream imageMemoryStream = new MemoryStream();
pdfPagesAsImages.First().Save(imageMemoryStream, ImageFormat.Png);
HttpResponseMessage response = new HttpResponseMessage();
response.Content = new StreamContent(imageMemoryStream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = pdf.Filename,
DispositionType = "attachment"
};
return response;
}
Attraverso il debug Ho verificato che il metodo PdfToImages
sta lavorando e che imageMemoryStream
si riempie con i dati dalla linea
pdfPagesAsImages.First().Save(imageMemoryStream, ImageFormat.Png);
Tuttavia nella gestione di esso, ricevo un allegato che è correttamente chiamato ma è 0 byte. Cosa devo cambiare per poter ricevere l'intero file? Penso che sia qualcosa di semplice ma non sono sicuro di cosa. Grazie in anticipo.
Forse è necessario impostare la posizione del flusso su 0? 'imageMemoryStream.Position = 0;' –