Discussions
Categories
- 196.7K All Categories
- 2.2K Data
- 235 Big Data Appliance
- 1.9K Data Science
- 449.8K Databases
- 221.6K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 549 MySQL Community Space
- 477 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 532 SQLcl
- 4K SQL Developer Data Modeler
- 186.9K SQL & PL/SQL
- 21.3K SQL Developer
- 295.4K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.1K Development Tools
- 104 DevOps
- 3.1K QA/Testing
- 645.9K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 153 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 17 Java Essentials
- 158 Java 8 Questions
- 85.9K Java Programming
- 79 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.2K Java SE
- 13.8K Java Security
- 203 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 395 LiveLabs
- 37 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.6K Other Languages
- 2.3K Chinese
- 170 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 230 Portuguese
ByteArray

Hello,
I have a byte array and would like to show it´s content in a web application using servlet.
Using SoapUI this is what i get into my application:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> <runReportInSessionResponse xmlns="http://xmlns.oracle.com/oxp/service/v2"> <runReportInSessionReturn> <metaDataList xsi:nil="true"/> <reportBytes>JVBERi0xLjYNCjUgMCBvYmoNCjw8DQovVHlwZSAvUGFnZQ0KL1BhcmVudCAzIDAgUg0KL1Jlc291cmNlcyA0IDAgUg0KL0NvbnRlbnRzIDYgMCBSDQovTWVkaWFCb3hbIDAgMCA2MTIuMCA3OTIuMCBdDQovQ3JvcEJveFsgMCAwIDYxMi4wIDc5Mi4wIF0NCi9Sb3RhdGUgMA0KPj4NCmVuZG9iag0KNiAwIG9iag0KPDwgL0xlbmd0aCA3ODcgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4NCnN0cmVhbQ0KeJzVVstuU0EM3UfKP3gJm+nYY3tmlrQqSAgKbcMCIVSF5lECfZBGBb6XBb+B5ybcR9SSUtikSdP0zNhzjn0Sjwdvj6Nn1R8P82m/tzvo97D6D4FIXI4EMQQnSDA47/d2nmK/B8QwmPR7j07PhvPF64/jo/HV5XzxeDArweVhOZdvSs59yxkUOKFjII1AITmF+Rgsx5fqufPsGGF6beHOTl79llgPzy2L5bUQyvYDnMlp9Y7U267C0q+S9XuHVTrvOGZEaV7hK3hH4nPy7Eu4pHQvxJS8e2/lGD0wviOCNLmMTJyTYEBEUC8uhUweOQfNVpxzqHeBiClUFCsZBReJI4J4donZUqNGZ2dJamGngEiOgrK2UNvoWTO1EtbQbwYW2mCKTlETtbJFr7YvCLbObbDTFsMGbZQ0GVtYc/IZHDfdKx68vbQpURAOMUXvSdSwwNljLpmZyLZW9W4snE1RLFUOjlLbwYZTXJr44McljL99vF6Mz2E0HF1ew9VwPoTh1Xx8Pb5YDH/+uKycXWx8WD2DD5vcTBvcbNKLndO97Gz5QpXvDl8LI0blHM1CxFWtRCgzkjeTxWANMUgjl5JSCERkJetY+4EpuqIwWbW1NNu+OIiZzMyWxYl1LbbQz+1umzjeKnHWIBUW7oqr0XVxsk3iJIkLiVU64hp0XZxulTgWh8hRu+JqdF1c3Cpx9Zd9R1yNdsRtoaYaLNMFMwfcekkb2/QfB6GN8HoSZsL/NgntWhfQBZBQtDlcTS6X7G7jUkzgMksp5xpS2NnctDmq6ryUa4EVAzDYDSStkvg/X08ZXbTw7KLnlp600vLk5T5Mz2bTm0/wYvfFyd6bo6P9g723lYB70auurd679A8cgzWWOiQf7b16czA4KfROYLKYwWg2gdlfsqoKJ8bD822kVqzv3rCBtYg4Nr0sakNNl7z9kqPVApqXwrGL/OYodqpd1s3iahyMDtmlMGuLId+9Gv8U2l4UG7upbGmvaRnFdPtaTGaatZVNPayqHcTZB7WxWV7a7MPFdDK7+V5/LH4Bolmz+w0KZW5kc3RyZWFtDQplbmRvYmoNCjEgMCBvYmoNCjw8DQovVHlwZSAvQ2F0YWxvZw0KL1BhZ2VzIDMgMCBSDQo+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PA0KL1R5cGUgL0luZm8NCi9Qcm9kdWNlciAoT3JhY2xlIEJJIFB1Ymxpc2hlciAxMi4yLjEuMy4wKQ0KPj4NCmVuZG9iag0KMyAwIG9iag0KPDwNCi9UeXBlIC9QYWdlcw0KL0tpZHMgWw0KNSAwIFINCl0NCi9Db3VudCAxDQo+Pg0KZW5kb2JqDQo0IDAgb2JqDQo8PA0KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0NCi9Gb250IDw8IA0KL0YxIDcgMCBSDQo+Pg0KL0V4dEdTdGF0ZSA8PA0KL0dTMSA4IDAgIFINCi9HUzIgOSAwICBSDQovR1MzIDEwIDAgIFINCi9HUzQgMTEgMCAgUg0KL0dTNSAxMiAwICBSDQovR1M2IDEzIDAgIFINCi9HUzcgMTQgMCAgUg0KPj4NCj4+DQplbmRvYmoNCjcgMCBvYmoNCjw8DQovVHlwZSAvRm9udA0KL1N1YnR5cGUgL1R5cGUxDQovQmFzZUZvbnQgL0hlbHZldGljYQ0KL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcNCj4+DQplbmRvYmoNCjggMCBvYmoNCjw8DQovVHlwZSAvRXh0R1N0YXRlDQovQk0gL05vcm1hbA0KL0NBIDEuMA0KL2NhIDAuMA0KPj4NCmVuZG9iag0KOSAwIG9iag0KPDwNCi9UeXBlIC9FeHRHU3RhdGUNCi9CTSAvTm9ybWFsDQovQ0EgMS4wDQovY2EgMC4wDQo+Pg0KZW5kb2JqDQoxMCAwIG9iag0KPDwNCi9UeXBlIC9FeHRHU3RhdGUNCi9CTSAvTm9ybWFsDQovQ0EgMC4yNzQNCi9jYSAxLjANCj4+DQplbmRvYmoNCjExIDAgb2JqDQo8PA0KL1R5cGUgL0V4dEdTdGF0ZQ0KL0JNIC9Ob3JtYWwNCi9DQSAwLjI3NA0KL2NhIDEuMA0KPj4NCmVuZG9iag0KMTIgMCBvYmoNCjw8DQovVHlwZSAvRXh0R1N0YXRlDQovQk0gL05vcm1hbA0KL0NBIDAuMjc0DQovY2EgMS4wDQo+Pg0KZW5kb2JqDQoxMyAwIG9iag0KPDwNCi9UeXBlIC9FeHRHU3RhdGUNCi9CTSAvTm9ybWFsDQovQ0EgMC4yNzQNCi9jYSAxLjANCj4+DQplbmRvYmoNCjE0IDAgb2JqDQo8PA0KL1R5cGUgL0V4dEdTdGF0ZQ0KL0JNIC9Ob3JtYWwNCi9DQSAwLjI3NA0KL2NhIDEuMA0KPj4NCmVuZG9iag0KeHJlZg0KMCAxNQ0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAxMDMzIDAwMDAwIG4NCjAwMDAwMDEwODggMDAwMDAgbg0KMDAwMDAwMTE3MCAwMDAwMCBuDQowMDAwMDAxMjM4IDAwMDAwIG4NCjAwMDAwMDAwMTAgMDAwMDAgbg0KMDAwMDAwMDE2OCAwMDAwMCBuDQowMDAwMDAxNDI5IDAwMDAwIG4NCjAwMDAwMDE1MzQgMDAwMDAgbg0KMDAwMDAwMTYwOCAwMDAwMCBuDQowMDAwMDAxNjgyIDAwMDAwIG4NCjAwMDAwMDE3NTkgMDAwMDAgbg0KMDAwMDAwMTgzNiAwMDAwMCBuDQowMDAwMDAxOTEzIDAwMDAwIG4NCjAwMDAwMDE5OTAgMDAwMDAgbg0KdHJhaWxlcg0KPDwNCi9TaXplIDE1DQovUm9vdCAxIDAgUg0KL0luZm8gMiAwIFINCi9JRCBbPDhhMTQyOTMwZmY4M2U2OGUyZTdjYTc5MTgzZWE3MzYzPjw4YTE0MjkzMGZmODNlNjhlMmU3Y2E3OTE4M2VhNzM2Mz5dDQo+Pg0Kc3RhcnR4cmVmDQoyMDY3DQolJUVPRg0K</reportBytes> <reportContentType>application/pdf</reportContentType> <reportFileID xsi:nil="true"/> <reportLocale xsi:nil="true"/> </runReportInSessionReturn> </runReportInSessionResponse> </soapenv:Body></soapenv:Envelope>
The servlet i use is:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String byteString = (request.getParameter("bytes"));byte[] bytes = byteString.getBytes();OutputStream os = response.getOutputStream();try { byte[] buffer = bytes; os.write(buffer, 0, buffer.length);} catch (Exception e) { System.out.println(e);} finally { if (os != null) { os.close(); }}}
but it display nothing in browser.
If i pass the content Type (which is a string value) it shows it in browser, so code is correct (perhaps not completed for pdf).
Can you help me?
Thanks
Carlos
Answers
-
The browser requires to know the mime-type to know if it can or not render the file.
You can know the mime-type from the ByteArray using something like ApacheTika or jMimeMagic
---
-
Hello,
Thanks for response.
I think you are rigth, but in that case how does the browser knows the mimetype of following code of servlet:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {path = "/home/weblogic/ccarvalho/OracleBIP/examples/javascript.pdf";try { File outputFile = new File(path); inputStream = new FileInputStream(outputFile); BufferedInputStream in = new BufferedInputStream(inputStream); int b; byte[] buffer = new byte[10240]; while ((b = in.read(buffer, 0, 10240)) != -1) { os.write(buffer, 0, b); }
?
Cause that shows the pdf correct
Regards,
Carlos
-
Perhaps in the case of the servlet the byteArray is not being correctly received or is incomplete.
Place thecode (with FileInputStream) in the servlet and validate the result.
----
-
Hello,
In the meantime i found out that the service (the postman printScreen of original post) was replying (implicitly) the result in Base64 format.
So started to decode it in client in a java class to validate and was ok, but when i put that code in the servlet it gives null after the decoding part:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String byteString = (request.getParameter("bytes")); System.out.println("byteString" + byteString); byte[] bytes = Base64.getDecoder().decode(byteString); System.out.println("bytes" + bytes); //response.setContentType("application/pdf" + "; charset=utf8"); FileOutputStream fos = new FileOutputStream("/home/weblogic/ccarvalho/OracleBIP/examples/test.pdf"); fos.write(bytes); fos.close(); OutputStream os = response.getOutputStream();
and the log from console is:
byteStringJVBERi0xLjYNCjUgMCBvYmoNCjw8DQovVHlwZSAvUGFnZQ0KL1BhcmVudCAzIDAgUg0KL1Jlc291cmNlcyA0IDAgUg0KL0NvbnRlbnRzIDYgMCBSDQovTWVkaWFCb3hbIDAgMCA2MTIuMCA3OTIuMCBdDQovQ3JvcEJveFsgMCAwIDYxMi4wIDc5Mi4wIF0NCi9Sb3RhdGUgMA0KPj4NCmVuZG9iag0KNiAwIG9iag0KPDwgL0xlbmd0aCA5NTUgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4NCnN0cmVhbQ0KeJyFV9tu20YQfRegf1igL nLdO XvsmXxCmcxLVYoK8MtbYZSyRBUS389xnKDhJXZ1MIoKAdnp37mZEUkj 3745fUoz3y8VZtVyo4y8ltHFktAjGkFNaVLvl4re3arkQ2orqbrl4s293wzbf5qEfp1 rL8sFRaUExRAFJevmm/9zMqu4ZBXGiyA9JaeF004oQ9JGMWbB18qfW2USWRGUJC/tDzbFZ5OuV2eX19Xl39XRnlcYnzxJ54 YN er2 tP6 fnX/s8gtejJCnj6evV05DB695QApd/yPt9fY8ANlB6Cevr zNHtZ4QxCiK3p5C1qyk7TuAUI4zAMy6qcd6l6c87k9BLiUKHnh 3d/3hwkAoqEAPPnwJM77rskDwvhAHoGu h1w3TlFXgPXWcdFvX/43NfjBsC4hF0A/q GoW 7aZe7CUVAJXI6nMLed/8woh fAEYasiBoz 0BlNgYyBoQgY/91N61TT1xShEuKDIRhOLTUEI4bmSDqiD33MAAwE8dgTMf87/gbW0IpWad67F5EEUlMpBKwP bunnklgGOmKRIWaDqj/4wdvUWIIIjifryKm834ryGmTEuHfkI5PLu0G0Qwhrg/9Q3j6KqH4HzRj zH1CxZ1 aLM5YEwqbYepLEsRgNU5tgxA6WYqI N7lSawf uEYB4ALkaIEXTATpuhq1Kfaa0L99ueh7qZ2An2jraeAeLBglGHmRxx4xsXWb5BJypJHHLie6ukAkqlSJIf4722LwquiJpTJq54rrIFOKO/JIvK7aPdNf gQxEmyqMtuuVvEzdg2yDRjyaB0/ESPijz0gfPrvN0W9UhNCDOnULy/ OX3U0j0pBH5rTYbUbUDSEuQpBDtzQ0mbuqnmcsBLVtSiPpmHWJ92O3qFzIn6734/ph3l9cn33YX57kCmb3JsTUUhWc jsq9bC88cP5HGHi4 HntYTHFHyWOG05x4SGZZ8IwSmNZsGQdvtM4HkupIJM8Fxy 00oeuBaLEm8uGptpLe8OEeN4ofIhQZHmM8WbIpKpwFRZiIrSTFEaq9OBx1IhKo5JRwbsuWO61ArjvNVkCsE0PM4tNlPHREZiM c92BWSYCKvL6mQoMiVVUgCb yhYKZj/pSFiB3L1uBAJ17RuY6hzPJ8KQSTd 5QKBVteZgXjOQpUqp1Hn 6UJjeRbKy0D9JkiukwHhe92xBphUVouX5zBSSo3i7LWTH8b dFLDjirklKdwjSvFoDTgFnkdcwRTtAulCULTkRec0mF8Bsngq1Q0KZW5kc3RyZWFtDQplbmRvYmoNCjggMCBvYmoNCjw8DQovVHlwZSAvUGFnZQ0KL1BhcmVudCAzIDAgUg0KL1Jlc291cmNlcyA0IDAgUg0KL0NvbnRlbnRzIDkgMCBSDQovTWVkaWFCb3hbIDAgMCA2MTIuMCA3OTIuMCBdDQovQ3JvcEJveFsgMCAwIDYxMi4wIDc5Mi4wIF0NCi9Sb3RhdGUgMA0KPj4NCmVuZG9iag0KOSAwIG9iag0KPDwgL0xlbmd0aCAxMTUxIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4 DQpzdHJlYW0NCnichVfbbttGEH034H YPqUF0uned5mXwk7cpqjhBLaANo9ram2z4cXgJYb vkPKMURrtoUAQeLOmfucHaJxDvDl6/r30xNcP rvT0/ON6cnv/wmIcDmjgSClIDBbytesnull<15-Mar-2018, 9:41:03,781 AM WET> <Error> <HTTP> <BEA-101020> <[[email protected][app:Booq module:Booq path:null spec-version:3.1 version:V0.0.133.0]] Servlet failed with an Exceptionjava.lang.NullPointerExceptionat java.io.FileOutputStream.write(FileOutputStream.java:313)at com.concept.booq.view.servlets.PdfServlet.doGet(PdfServlet.java:37)at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)Truncated. see log file for complete stacktrace>
So there is an issue in decoding the Base64format to byteArray.
Solving that should do the trick.
Thanks,
Carlos
P.S. - line 37 is line 13 of doGet method of servlet (fos.write(bytes))
-
Hello,
Found that changing the library of Base64 to org.apache.commons.codec.binary.Base64 helped solving the issue, although i went to a different approach that does not need a servlet now.
I convert it to image (Blob) and show it in web page.
Done.
Thanks everyone.
Regards,
Carlos