1.刚开始的时候我不知道具体的需求,然后还走了很多弯路,甚至还把数据下载到了自己的电脑上的磁盘中,但其实后端要做的只是接收前端传回的路径,然后与服务器建立连接,然后响应前端就行
2.代码
public void downLoadFile( HttpServletResponse response, @RequestParam(name = "resultId") @ApiParam(value = "结果ID") String resultId ) throws IOException { SxProResult result = sxProResultService.selectResultByResultId(resultId); // 文件路径 String resultValue = result.getResultValue(); // 文件地址的全路径 String httpUrl = filePrefix + resultValue; ServletOutputStream out = null; try { // 与服务器建立连接 URL url = new URL(httpUrl); URLConnection conn = url.openConnection(); InputStream inputStream = conn.getInputStream(); try { //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型 response.setContentType("multipart/form-data"); } catch (Exception e){ e.printStackTrace(); } out = response.getOutputStream(); // 读取文件流 int len = 0; byte[] buffer = new byte[1024 * 10]; while ((len = inputStream.read(buffer)) != -1) { out.write(buffer, 0, len); } out.flush(); } catch (Exception e){ e.printStackTrace(); } }
3.在其中遇到的问题,最终接口写好后,与前端联调的过程中,发现前端能正常下载文件,但是后台会报一个转换器的错误,
百度之后发现,是我Controller层的文件下载不能有返回值,当时我写的返回值是Result<?>,后面改成void之后解决了
相关文章
暂无评论...