Response.Write Chaîne Base64

Je reçois une chaîne Base64 qui est en fait la représentation sous forme de chaîne d’un fichier PDF. Je veux écrire cette chaîne avec Response.Write, mais sans la reconvertir en sa représentation binary.

J’ai essayé ceci:

var base64ssortingng = "..."; Response.Write(base64Ssortingng); Response.ContentType = "application/pdf"; Response.AddHeader("Content-Transfer-Encoding", "base64"); 

Le navigateur ne reconnaît pas le contenu en tant que fichier PDF codé en base64. Comment puis-je réparer cela?

EDIT: c’est la réponse

 HTTP/1.1 200 OK Cache-Control: private Content-Type: application/pdf; charset=utf-8 Vary: Accept-Encoding Server: Microsoft-IIS/7.5 Content-Transfer-Encoding: base64 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Wed, 11 Apr 2012 11:00:04 GMT Content-Length: 107304 JVBERi0xLjQKJeLjz9MKMSA... more content here 

Content-Transfer-Encoding n’est pas un en-tête HTTP valide; C’est un ancien en-tête de MIME. Son équivalent HTTP, Transfer-Encoding prend en charge les valeurs suivantes:

  • chunked
  • identité
  • gzip
  • compresse
  • dégonfler

Si vous avez un document PDF codé en Base64, il n’y a pas de transformation HTTP à partir de base64 qui décodera ce document pour vous. Vous devez donc le décoder sur votre serveur avant de le placer dans le corps de la réponse.

Si vous voulez un stream qui convertit à partir de Base64, vous pouvez utiliser un FromBase64Transform en un CryptoStream :

 new CryptoStream(fileStream, new FromBase64Transform(), CryptoStreamMode.Read) 

Quand vous promettez un PDF avec

  Response.ContentType = "application/pdf"; 

Vous devez également en livrer un en ouvrant le stream de réponse et y écrire la version binary du PDF.

Pouvez-vous essayer ceci

 var base64ssortingng = "..."; Response.ContentType = "application/pdf"; Response.AddHeader("Content-Transfer-Encoding", "base64"); Response.Write(base64Ssortingng); Response.End(); 

Peut-être que cela vous aidera