随着互联网的快速发展,图片是网页中的重要元素之一,数量也越来越多。如何将网页中的图片链接保存至服务器,以便快速查看和使用,成为网站开发者关注的问题之一。本文将介绍。
一、获取图片链接
获取图片链接有多种方法,最常用的是通过网页源代码获取。Java中可以使用URLConnection或者HttpClient获取网页源代码,进而通过正则表达式或者Jsoup等工具解析出图片链接。
例如,使用URLConnection获取网页源代码,并使用正则表达式解析图片链接的示例代码如下:
“`
String url = “http://www.example.com”;
String regex = ““;
Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pattern.matcher(getHtml(url));
while (matcher.find()) {
String imgUrl = matcher.group(1);
System.out.println(imgUrl);
}
“`
二、下载图片
获取图片链接后,需要将图片下载到本地或者服务器。Java中可以使用Java IO或者第三方库如Apache Commons IO等下载图片。
例如,使用Java IO下载图片的示例代码如下:
“`
String imgUrl = “http://www.example.com/image.jpg”;
String savePath = “C:/images/image.jpg”;
URL url = new URL(imgUrl);
URLConnection conn = url.openConnection();
InputStream in = conn.getInputStream();
byte[] buffer = new byte[1024];
int len = 0;
File file = new File(savePath);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
OutputStream out = new FileOutputStream(file);
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
out.close();
in.close();
“`
三、保存图片链接及其内容
下载图片后,将图片保存到服务器也需要一定的处理。Java中可以使用Java IO或者第三方库如Apache Commons IO等保存图片链接及其内容。
例如,使用Java IO保存图片链接及其内容的示例代码如下:
“`
String imgUrl = “http://www.example.com/image.jpg”;
String savePath = “C:/images/image.jpg”;
File imgFile = new File(savePath);
String imgPath = imgFile.getAbsolutePath();
String imgData = Base64.getEncoder().encodeToString(Files.readAllBytes(imgFile.toPath()));
String imgLink = ““;
File linkFile = new File(“C:/links.txt”);
PrintWriter pw = new PrintWriter(new FileWriter(linkFile, true));
pw.println(imgUrl + “\t” + imgPath + “\t” + imgLink);
pw.close();
“`
四、代码封装
以上代码可以自己封装成工具类,供自己或者他人使用。例如,Java实现将网页中所有图片链接下载到本地并保存链接及其内容的工具类如下:
“`
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.nio.file.Files;
import java.util.Base64;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ImageDownloader {
public static void mn(String[] args) {
downloadAndSave(“http://www.example.com”, “C:/images”, “C:/links.txt”);
}
public static void downloadAndSave(String url, String savePath, String linkPath) {
String regex = ““;
Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
Matcher matcher = pattern.matcher(getHtml(url));
while (matcher.find()) {
String imgUrl = matcher.group(1);
String fileName = imgUrl.substring(imgUrl.lastIndexOf(“/”) + 1);
String filePath = savePath + “/” + fileName;
downloadImage(imgUrl, filePath);
saveLink(imgUrl, filePath, linkPath);
}
}
public static String getHtml(String urlStr) {
StringBuilder = new StringBuilder();
try {
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
.append(line);
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
return .toString();
}
public static void downloadImage(String imgUrl, String filePath) {
try {
URL url = new URL(imgUrl);
URLConnection conn = url.openConnection();
InputStream in = conn.getInputStream();
byte[] buffer = new byte[1024];
int len = 0;
File file = new File(filePath);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
OutputStream out = new FileOutputStream(file);
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
out.close();
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void saveLink(String imgUrl, String imgPath, String linkPath) {
try {
File imgFile = new File(imgPath);
String imgData = Base64.getEncoder().encodeToString(Files.readAllBytes(imgFile.toPath()));
String imgLink = ““;
File linkFile = new File(linkPath);
PrintWriter pw = new PrintWriter(new FileWriter(linkFile, true));
pw.println(imgUrl + “\t” + imgPath + “\t” + imgLink);
pw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
“`
五、注意事项
在实现图片链接保存至服务器的过程中,需要注意以下几点:
1. 需要确保图片链接的有效性,避免因无效链接导致程序异常或下载失败。
2. 需要确保服务器的存储空间足够,避免因存储空间不足导致程序异常或下载失败。
3. 需要确保代码的安全性,避免因代码漏洞或权限设置不当导致服务器被攻击或被非法修改。
六、
相关问题拓展阅读:
- 在java中如何将图片保存到数据库?
- java读取照片保存到达梦数据库
在java中如何将图片保存到数据库?
更好不要保存图片只存路径。
非要传的话保存二进制的流就可以了。
存取图片就是二进制数据的存取问题
把图片以文件的时候读入到程序中
转换成byte
以byte显示保存到数据库中
另外,access保存乎帆文件~~岁尘雹不合适~
显示和存储没关系,看你要怎么显示了~显示到浏览器兄御?
我们是把图片都保存在文件服务器上面
然后在数据库里面放它的访问路径
需要连接数据库
然后就是可以了
连接数据库后,可以实现增删改查功能
java读取照片保存到达梦数据库
存储图片是后端服务器比较基础的功能,一般来说慎正拦,图片清手可以存储在服务器的文件系统中,然后数据库中只需要存储url就可以了。另外一种办法是,将图片通过Base64编码后存储到数据库中,数据库中存储图片的base64编码的二进制可以使用TEXT(mysql)类型宽胡。
java根据图片链接保存至服务器的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java根据图片链接保存至服务器,Java实现图片链接保存至服务器的方法,在java中如何将图片保存到数据库?,java读取照片保存到达梦数据库的信息别忘了在本站进行查找喔。