求java通过get请求下载文件到本地存放的代码
比如从下面这个链接下载到pdf文件
https://bswj.fpggfwpt.guangxi.chinatax.gov.cn:19001/api?action=getDoc&code=045002100111_596880_2022015_A6F4A0H2&type=12
在网路上找了好多代码,都无法使用
java通过get请求下载文件到本地存放的代码
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注您好,一般针对这种需求,可以有以下的实现方式:
1、针对这种pdf类的文件,可以直接通过http服务把文件放出来,可以直接进行文件的预览,一般的比如chrome浏览器会自带了下载功能。
2、自己手写代码的方式,可以参考以下的代码:@GetMapping("/download") public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request){ try { if (!FileUtils.checkAllowDownload(fileName)){ throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName)); } String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); String filePath = HngtghyConfig.getDownloadPath() + fileName; response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); FileUtils.setAttachmentResponseHeader(response, realFileName); FileUtils.writeBytes(filePath, response.getOutputStream()); if (delete){ FileUtils.deleteFile(filePath); } }catch (Exception e) { log.error("下载文件失败", e); } } /** * 输出指定文件的byte数组 * * @param filePath 文件路径 * @param os 输出流 * @return */ public static void writeBytes(String filePath, OutputStream os) throws IOException { FileInputStream fis = null; try { File file = new File(filePath); if (!file.exists()) { throw new FileNotFoundException(filePath); } fis = new FileInputStream(file); byte[] b = new byte[1024]; int length; while ((length = fis.read(b)) > 0) { os.write(b, 0, length); } } catch (IOException e) { throw e; } finally { IOUtils.close(os); IOUtils.close(fis); } }解决 无用评论 打赏 举报