帮我写一个RestTemplate来下载网络链接里的图片到本地的方法,形参为url链接,返回值为图片本地存储路径
时间: 2024-05-01 14:18:18 浏览: 59
下载网页中的图片到本地
好的,下面是一个简单实现的方法:
```
import org.springframework.http.*;
import org.springframework.web.client.*;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Path;
import java.nio.file.Paths;
public class DownloadImageUtil {
public static String downloadImage(String url) throws IOException {
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Collections.singletonList(MediaType.IMAGE_JPEG));
HttpEntity<String> entity = new HttpEntity<>(headers);
ResponseEntity<byte[]> response = restTemplate.exchange(
url, HttpMethod.GET, entity, byte[].class);
byte[] result = response.getBody();
// 生成文件名
String[] paths = url.split("/");
String fileName = paths[paths.length - 1];
// 将图片存储到本地
Path fileLocation = Paths.get("./" + fileName);
FileOutputStream outputStream = new FileOutputStream(fileLocation.toFile());
outputStream.write(result);
outputStream.close();
return fileLocation.toString();
}
}
```
对于输入的 url 链接,该方法会向服务器发起一个 GET 请求,并设置 Accept 头部为 IMAGE_JPEG。通过 ResponseEntity 的 getBody() 方法获得返回结果,即图片的二进制流。然后生成一个文件名并将结果写入到该文件中,最后返回图片的本地存储路径。注意,该方法仅适用于下载 JPEG 格式的图片。如果需要下载其他格式的图片,请设置对应的 MediaType,并将生成的文件扩展名与之对应。
阅读全文