前言
前后端分離后, 前端下載文件, 定義接口時有點疑惑, 前端下載文件都有哪種方式?怎么去定義接口?
正文
結合以前的經驗, 下載文件/展示圖片前端可以直接通過文件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對象實現下載
前端多種方式實現文件下載
