代码拉取完成,页面将自动刷新
19
兼容本地绝对路径文件获取(win、linux)
已合并
兼容以下业务场景,即读取本地绝对路径的文件到转换服务器。
使用接口示例:
http://localhost:8012/onlinePreview?url=d:/test.docx
关键代码如下:
if(isLocalUrl(urlStr)){//判断请求url是否是绝对路径
byte[] bytes = getBytesFromLocalUrl(urlStr);//获取文件数据
OutputStream os = new FileOutputStream(new File(realPath));
saveBytesToOutStream(bytes, os);
}
public byte[] getBytesFromLocalUrl(String urlStr) throws IOException {//根据绝对路径读取本地文件
File file = new File(urlStr);
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream(1024);
byte[] b = new byte[1024];
int n;
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n);
}
fis.close();
byte[] data = bos.toByteArray();
bos.close();
return data;
}
====== 2020.12.10 更新============
感谢博主的建议,采取file协议读取本地文件,代码可复用http协议读取文件的方式,最终代码变得十分简单,如下:
if (url.getProtocol() != null && (url.getProtocol().toLowerCase().startsWith("file")||url.getProtocol().toLowerCase().startsWith("http"))) {
...
}
只需要加上file协议的判断即可。
接口示例:
http://localhost:8012/onlinePreview?url=file:///d:/test.docx