前言
前后端分离后, 前端下载文件, 定义接口时有点疑惑, 前端下载文件都有哪种方式?怎么去定义接口?
正文
结合以前的经验, 下载文件/展示图片前端可以直接通过文件url去展示
如果通过接口传输数据需要流文件的形式呢?流指的是二进制流?具体到java语言中传输的数据类型是byteArray?
接口定义
定义数据传输类型为byte[]
以下是实现, 根据文件所在服务器的url, 获取byte[]
/** * 根据url获取文件流 byte[] * * @param url * @return byte[] * @throws IOException */ public byte[] getFile(String url) throws IOException { URL urlConet = new URL(url); HttpURLConnection con = (HttpURLConnection) urlConet.openConnection(); con.setRequestMethod("GET"); con.setConnectTimeout(4 * 1000); InputStream inputStream = con.getInputStream(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[2048]; int len = 0; while ((len = inputStream.read(buffer)) != -1) { byteArrayOutputStream.write(buffer, 0, len); } inputStream.close(); byte[] data = byteArrayOutputStream.toByteArray(); byteArrayOutputStream.close(); return data; }
将data返回给前端进行处理
前端可以根据二进制流转blob对象或其他方式处理