133 votes

Microsoft Web Api renvoyer un fichier? utiliser octet []?

Je souhaite utiliser l'API Web ASP.NET. Je souhaite pouvoir télécharger un fichier PDF avec C # à partir de l'API (générée par l'API).

Puis-je simplement demander à l'API de retourner un octet []? et pour l'application c #, puis-je simplement faire:

 byte[] pdf = client.DownloadData("urlToAPI");? 
 

et

 File.WriteAllBytes()?
 

199voto

Regfor Points 4259

Mieux retourner HttpResponseMessage avec StreamContent à l'intérieur.

Ici est un exemple:

public HttpResponseMessage GetFile(string id)
{
    if (String.IsNullOrEmpty(id))
        return Request.CreateResponse(HttpStatusCode.BadRequest);

    string fileName;
    string localFilePath;
    int fileSize;

    localFilePath = getFileFromID(id, out fileName, out fileSize);

    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
    response.Content = new StreamContent(new FileStream(localFilePath, FileMode.Open, FileAccess.Read));
    response.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment");
    response.Content.Headers.ContentDisposition.FileName = fileName;

    return response;
}

UPD de commentaire par patridge: Quelqu'un d'autre devrait obtenir ici à la recherche d'envoyer une réponse à partir d'un tableau d'octets au lieu d'un fichier, vous allez avoir à utiliser de nouvelles ByteArrayContent(someData) au lieu de StreamContent (voir ici).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X