以下是直接通过url直接下载到本地。
package com.yao.downLoadUrlImage;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class DownLoadUrlImage {
// 通过get请求得到读取器响应数据的数据流
public static InputStream getInputStreamByGet(String url) {
try {
HttpURLConnection conn = (HttpURLConnection) new URL(url)
.openConnection();
conn.setReadTimeout(5000);
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream inputStream = conn.getInputStream();
return inputStream;
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
// 将服务器响应的数据流存到本地文件
public static void saveData(InputStream is, File file) {
try (BufferedInputStream bis = new BufferedInputStream(is);
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(file));) {
byte[] buffer = new byte[1024];
int len = -1;
while ((len = bis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
bos.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String url = "http://img.coocaa.com/www/attachment/forum/201602/16/085938u86ewu4l8z6flr6w.jpg";
String[] split = url.split("\\/");
String fileName = split[split.length - 1];
File file = new File("d:/", fileName);
InputStream inputStream = getInputStreamByGet(url);
saveData(inputStream, file);
}
}
以下是前端发送请求,经过struts2 后端响应后下载文件
前端代码:
html:(一定要有form表单)
<form class="form-inline" id="uploadImages" role="form">
<s:hidden name="imagesVO.imageUrl" id="imageUrlId"></s:hidden>
</form>
<input id="btn" class="btn btn-primary" type="button" value=" upload " onclick="downloadInfo('http://ssp.bbisbw.com/upload/20170811/20170811143642274300x250.gif');"/>
js:
function downloadInfo(url) {
$("#imageUrlId").val(url);
var exportForm = document.getElementById("uploadImages");
exportForm.action="<%=request.getContextPath()%>/data/OfferData!downloadImage.action";
exportForm.submit();
}
struts.xml配置
<action name="OfferData" class="com.kkgame.sspop.data.action.OfferDataAction" method="do{1}">
<result name="downloadImage" type="stream">
<param name="contentType">application/octet-stream</param>
<param name="contentDisposition">attachment;filename="${imageName}"</param>
<param name="bufferSize">1024</param>
<param name="inputName">imageStream</param>
</result>
<result name="falseDownload"></result>
</action>
action:
InputStream imageStream;//和struts.xml配置中的名称一致
String imageName;//和struts.xml配置中的名称一致
public String doDownloadImage(){
if(imagesVO == null){
imagesVO = new ImagesVO();
}
// String url = "http://ssp.bbisbw.com/upload/20170811/20170811143642274300x250.gif";
String url =imagesVO.getImageUrl();
//根据地址获取图片名称
String iName[] = imagesVO.getImageUrl().split("\\/");
imageName = iName[iName.length-1];//20170811143642274300x250.gif
try {
HttpURLConnection conn = (HttpURLConnection) new URL(url)
.openConnection();
conn.setReadTimeout(5000);
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
imageStream = conn.getInputStream();
return "downloadImage";
}else{
return "falseDownload";
}
} catch (IOException e) {
e.printStackTrace();
return "falseDownload";
}
}
//get set
public InputStream getImageStream() {
return imageStream;
}
public void setImageStream(InputStream imageStream) {
this.imageStream = imageStream;
}
public String getImageName() {
return imageName;
}
public void setImageName(String imageName) {
this.imageName = imageName;
}
看NBA会员直播 看个球www.kangeqiu.top