java直接下载网络URL图片给用户浏览器
通过请求网络URL图片直接返回给用户 浏览器直接下载
FileDownloadController
package top.wintp.demo.demo.controller;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
/**
* 推流给用户
*
* @author: pyfysf
* <p>
* @qq: 337081267
* <p>
* @CSDN: http://blog.csdn.net/pyfysf
* <p>
* @blog: http://wintp.top
* <p>
* @email: pyfysf@163.com
* <p>
* @time: 2019/12/6
*/
@Controller
public class FileDownloadController {
/**
* 下载文件
*
* @return
*/
@RequestMapping("/downloadFileByIs")
public ResponseEntity<byte[]> downloadFile() throws IOException {
String targetUrl = "http://img.wintp.top/zblog/meinv.png";
HttpStatus status = HttpStatus.CREATED;
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
headers.setContentDispositionFormData("attachment", System.currentTimeMillis() + ".png");
InputStream is = HttpUtils.dowloadFile(targetUrl);
byte[] bytes = readInputStream(is);
return new ResponseEntity<byte[]>(bytes, headers, status);
}
/**
* 读取字节输入流内容
*
* @param is
* @return
*/
private byte[] readInputStream(InputStream is) {
ByteArrayOutputStream writer = new ByteArrayOutputStream();
byte[] buff = new byte[1024 * 2];
int len = 0;
try {
while ((len = is.read(buff)) != -1) {
writer.write(buff, 0, len);
}
is.close();
} catch (IOException e) {
e.printStackTrace();
}
return writer.toByteArray();
}
}
HttpUtils
package top.wintp.demo.demo.controller;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class HttpUtils {
/**
* 模拟 http post请求
*
* @param httpUrl
* @return
* @throws IOException
*/
public static InputStream dowloadFile(String httpUrl) throws IOException {
URL url = null;
try {
url = new URL(httpUrl);
} catch (MalformedURLException e1) {
e1.printStackTrace();
}
URLConnection conn = url.openConnection();
InputStream inStream = conn.getInputStream();
return inStream;
}
}
上述代码运行在SpringBoot的环境中