前后端分离文件下载接口定义
前言
前后端分离后, 前端下载文件, 定义接口时有点疑惑, 前端下载文件都有哪种方式?怎么去定义接口?
正文
结合以前的经验, 下载文件/展示图片前端可以直接通过文件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对象实现下载
前端多种方式实现文件下载
作者:习惯沉淀
如果文中有误或对本文有不同的见解,欢迎在评论区留言。
如果觉得文章对你有帮助,请点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
扫码关注一线码农的学习见闻与思考。
回复"大数据","微服务","架构师","面试总结",获取更多学习资源!