forked from fanruan/design
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.8 KiB
57 lines
1.8 KiB
package com.fr.design.ui; |
|
|
|
import com.fr.stable.StringUtils; |
|
import com.teamdev.jxbrowser.chromium.Browser; |
|
import com.teamdev.jxbrowser.chromium.BrowserContext; |
|
import com.teamdev.jxbrowser.chromium.ProtocolService; |
|
import com.teamdev.jxbrowser.chromium.URLResponse; |
|
|
|
import java.io.DataInputStream; |
|
import java.io.InputStream; |
|
|
|
/** |
|
* @author richie |
|
* @version 10.0 |
|
* Created by richie on 2019-03-07 |
|
*/ |
|
public class Assistant { |
|
|
|
public static URLResponse inputStream2Response(InputStream inputStream, String filePath) throws Exception { |
|
URLResponse response = new URLResponse(); |
|
DataInputStream stream = new DataInputStream(inputStream); |
|
byte[] data = new byte[stream.available()]; |
|
stream.readFully(data); |
|
response.setData(data); |
|
String mimeType = getMimeType(filePath); |
|
response.getHeaders().setHeader("Content-Type", mimeType); |
|
return response; |
|
} |
|
|
|
|
|
private static String getMimeType(String path) { |
|
if (StringUtils.isBlank(path)) { |
|
return "text/html"; |
|
} |
|
if (path.endsWith(".html")) { |
|
return "text/html"; |
|
} |
|
if (path.endsWith(".css")) { |
|
return "text/css"; |
|
} |
|
if (path.endsWith(".js")) { |
|
return "text/javascript"; |
|
} |
|
if (path.endsWith(".svg")) { |
|
return "image/svg+xml"; |
|
} |
|
return "text/html"; |
|
} |
|
|
|
public static void setEmbProtocolHandler(Browser browser, EmbProtocolHandler handler) { |
|
BrowserContext browserContext = browser.getContext(); |
|
ProtocolService protocolService = browserContext.getProtocolService(); |
|
// 支持读取jar包中文件的自定义协议————emb:/com/fr/design/images/bbs.png |
|
protocolService.setProtocolHandler("emb", handler); |
|
protocolService.setProtocolHandler("file", handler); |
|
} |
|
}
|
|
|