Java开发
Jsoup的使用教程(5)-响应转输出流(图片、PDF等的下载)
2025-01-22 25 0
简介 Jsoup的使用教程-响应转输出流(图片、PDF等的下载)
使用 Jsoup 下载图片、PDF 和压缩等文件时,需要将响应转化成输出流。转化成 输出流的目的是增强写文件的能力,即以字节为单位写入指定文件。
以图片下载为例,使用 bodyStream()方法将响应转化成输出流,并以缓 冲流的方式写入指定文件。另外,针对图片和 PDF 等文件,在执行 URL 请求获取 Response 时,必须通过 ignoreContentType(boolean ignoreContentType)方法设置忽略响 应内容的类型,否则会报错。
public class JsoupConnectInputstream {
public static void main(String[] args) throws IOException {
String imageUrl = "http://i-4.******.com/2018/6/11/KDE5Mngp/ae0c2d4d-04fb-4066-872c-a8c7a7c4ea4f.jpg";
Connection connect = Jsoup.connect(imageUrl);
Connection.Response response = connect.method(Connection.Method.GET).
ignoreContentType(true).execute();
System.out.println("文件类型为:" + response.contentType());
//响应转化成输出流
BufferedInputStream bufferedInputStream = response.
bodyStream();
//保存图片
saveImage(bufferedInputStream,"image/1.jpg");
}
/**
* 保存图片操作
* @param in 输入流
* @param savePath 保存的文件目录
* @throws IOException
*/
static void saveImage(BufferedInputStream in, String savePath) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
//创建缓冲流
FileOutputStream fileOutStream = new FileOutputStream(new File(savePath));
BufferedOutputStream bufferedOut = new BufferedOutputStream(fileOutStream);
//图片写入
while ((len = in.read(buffer, 0, 1024)) != -1) {
bufferedOut.write(buffer, 0, len);
}
//缓冲流释放与关闭
bufferedOut.flush();
bufferedOut.close();
}
}