兼容以下业务场景,即读取本地绝对路径的文件到转换服务器。

输入图片说明
使用接口示例:
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