前后端分离文件下载接口定义

前言

前后端分离后, 前端下载文件, 定义接口时有点疑惑, 前端下载文件都有哪种方式?怎么去定义接口?

正文

结合以前的经验, 下载文件/展示图片前端可以直接通过文件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对象或其他方式处理

感谢

前端下载二进制流文件

接口返回二进制文件流,前端通过blob对象实现下载

前端多种方式实现文件下载

 

posted @ 2020-08-27 11:35  习惯沉淀  阅读(1473)  评论(0编辑  收藏  举报