![](/img/trans.png)
[英]How to send a picture as part of a multipart POST request - Java HtmlUnit
[英]How to send picture to browser in Java
我可能一起走錯了路。 我正在嘗試使用我用Java編寫的服務器代碼將.gif或.jpg文件發送到FireFox瀏覽器。
使用此代碼:
File pic = new File(pictureFile);
byte[] byteContent = Files.readAllBytes(pic.toPath());
//System.out.println("Content: " + Arrays.toString(byteContent));
我確定我已成功將文件寫入字節數組,因為如果取消注釋System.out.println()行,則IDE中的內容將讀取[-1,-40,-1,-32、0。 。] (等等)。
當我嘗試將圖片輸出到瀏覽器時,如下所示:
os.write("<html><head><title>Not Found</title></head><body>\n".getBytes());
os.write("<h3>" .getBytes());
os.write( byteContent);
os.write(" </h3>\n".getBytes());
os.write("</body></html>\n".getBytes());
輸出是垃圾。 我需要做什么? 我確定我發送的是正確的HTTP標頭。
圖像數據不能直接放在HTML數據中。
您可以通過以下方式在base64中對圖像進行編碼並將其放入HTML代碼中:
<img src="data:(file type);base64,(base64 text)">
file type
對於.gif應該為image/gif
,對於.jpg為image/jpeg
例:
<img src="data:image/gif;base64,R0lGODlhCgAJAPcAAAAAAAAAMwAAZgAAmQAAzAAA/wArAAArMwArZgArmQArzAAr/wBVAABVMwBVZgBVmQBVzABV/wCAAACAMwCAZgCAmQCAzACA/wCqAACqMwCqZgCqmQCqzACq/wDVAADVMwDVZgDVmQDVzADV/wD/AAD/MwD/ZgD/mQD/zAD//zMAADMAMzMAZjMAmTMAzDMA/zMrADMrMzMrZjMrmTMrzDMr/zNVADNVMzNVZjNVmTNVzDNV/zOAADOAMzOAZjOAmTOAzDOA/zOqADOqMzOqZjOqmTOqzDOq/zPVADPVMzPVZjPVmTPVzDPV/zP/ADP/MzP/ZjP/mTP/zDP//2YAAGYAM2YAZmYAmWYAzGYA/2YrAGYrM2YrZmYrmWYrzGYr/2ZVAGZVM2ZVZmZVmWZVzGZV/2aAAGaAM2aAZmaAmWaAzGaA/2aqAGaqM2aqZmaqmWaqzGaq/2bVAGbVM2bVZmbVmWbVzGbV/2b/AGb/M2b/Zmb/mWb/zGb//5kAAJkAM5kAZpkAmZkAzJkA/5krAJkrM5krZpkrmZkrzJkr/5lVAJlVM5lVZplVmZlVzJlV/5mAAJmAM5mAZpmAmZmAzJmA/5mqAJmqM5mqZpmqmZmqzJmq/5nVAJnVM5nVZpnVmZnVzJnV/5n/AJn/M5n/Zpn/mZn/zJn//8wAAMwAM8wAZswAmcwAzMwA/8wrAMwrM8wrZswrmcwrzMwr/8xVAMxVM8xVZsxVmcxVzMxV/8yAAMyAM8yAZsyAmcyAzMyA/8yqAMyqM8yqZsyqmcyqzMyq/8zVAMzVM8zVZszVmczVzMzV/8z/AMz/M8z/Zsz/mcz/zMz///8AAP8AM/8AZv8Amf8AzP8A//8rAP8rM/8rZv8rmf8rzP8r//9VAP9VM/9VZv9Vmf9VzP9V//+AAP+AM/+AZv+Amf+AzP+A//+qAP+qM/+qZv+qmf+qzP+q///VAP/VM//VZv/Vmf/VzP/V////AP//M///Zv//mf//zP///wAAAAAAAAAAAAAAACH5BAEAAPwALAAAAAAKAAkAAAgkAPcJHLgPAEGCAAweLJhwYUOFCAdCLBhRYMKLDSkeNJgRIYCAADs=">
您不能直接在瀏覽器中顯示字節內容。 使用以下步驟
步驟1:將字節數組轉換為數據URL
StringBuilder sb = new StringBuilder();
sb.append("data:image/png;base64,");
sb.append(StringUtils.newStringUtf8(Base64.encodeBase64(byteContent, false)));
String newImage = sb.toString();
第2步:在img標簽中使用此標簽
os.write("<img src="+newImage+" />");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.