@MethodService
public void downloadFile() throws MalformedURLException {
String urlString = "http://127.0.0.1:8081/test.jar";
// 创建URL对象
URL url = new URL(urlString);
ByteArrayOutputStream outputStream = getMeta().getResponse().getByteArrayoutputStream();
try (InputStream inputStream = url.openStream()) {
// 打开并获取输入流
if (inputStream != null) {
// 现在可以从输入流中读取数据,这里只是简单打印
byte[] buffer = new byte[1024];
int read;
while ((read = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, read);
}
} else {
outputStream.write("无法打开URL连接或读取资源".getBytes());
}
} catch (IOException ignore) {
}
String encodedFileName = null;
try {
encodedFileName = URLEncoder.encode("test.jar", StandardCharsets.UTF_8.toString());
} catch (UnsupportedEncodingException ignore) {
}
// 设置Content-Disposition头,让浏览器以附件形式下载,并指定了文件名
getMeta().getResponse().setHeader("Content-Disposition", "attachment; filename=\"" + encodedFileName + "\"");
// 指定 ContentType
getMeta().getResponse().setContentType("application/java-archive");
// 需要设置 @file_return 参数,才会返回文件流给前端,否则统一返回 JSON
getMeta().addArgument("@file_return", "true");
}