2017-05-18 2 views
-1

Je reçois le FileOutputStream en tant que chaîne dans mon servlet, Comment puis-je l'écrire dans un fichier.écrire FileOutputStream (reçu en tant que chaîne) dans le fichier

J'ai essayé de convertir la chaîne en octets et de l'assigner à nouveau FileOutputStream, il génère le fichier mais dit que le format est corrompu.

J'ai essayé différents codes mais aucun d'entre eux ne fonctionne.

File file = new File("d:/file1.pdf"); 
     String content = request.getParameter("TextB1"); 

     try (FileOutputStream fop = new FileOutputStream(file)) { 

      // get the content in bytes 
      byte[] contentInBytes = content.getBytes(); 

      fop.write(contentInBytes); 
      fop.flush(); 
      fop.close(); 

      System.out.println("Done"); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
+0

Ce qui est passé dans 'TextB1'? Est-ce réellement un fichier PDF? – shmosel

+0

En fait, j'obtiens FileOutputStream de l'applet tierce en javascript en faisant de la varification de document en utilisant cette applet, puis je l'enregistre dans un champ caché et je soumets le formulaire. Maintenant, dans ma servlet, je reçois cela comme une ficelle. et j'ai besoin de sauvegarder cela sous forme de fichier (en format pdf). –

+0

ma question n'est pas sur la façon de créer un fichier pdf, je reçois le fileoutputstream en chaîne et je dois l'écrire dans un fichier. –

Répondre

0

Probablement le problème est dû au fait que vous devriez décoder le contenu si c'est un fichier PDF.

quelque chose comme cela devrait probablement travailler:

BASE64Decoder decoder = new BASE64Decoder(); 
byte[] decodedBytes = decoder.decodeBuffer(content.getBytes()); 
+0

Vous ne devriez pas utiliser 'sun.misc'. Ce sont des API internes qui peuvent être supprimées à tout moment (je pense qu'on s'attend à ce qu'elles soient dans Java 9). – shmosel