流的方式访问网络资源

package com.wtoip.h5.interfaces.download;


import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


import com.wtoip.h5.eo.EOWtoipAppVersion;
import com.wtoip.h5.ro.ROWtoipAppVersionUtil;


@Controller
public class DownLoadController {
/**
* 下载apk

* @return
*/
@RequestMapping(value = { "downLoad", "downLoad/" }, produces = { "application/json;charset=UTF-8" })
@ResponseBody
public void test(HttpServletRequest request, HttpServletResponse response) {
System.out.println("开始下载文件");


// response.setContentType("application/ms-word");


// 0:Android 用户 1:ios用户 2android商家 3ios商家
String type = request.getParameter("type");

// D:\lilong\main_new\h5\
String projectPath = request.getSession().getServletContext().getRealPath("/");
projectPath = projectPath.replaceAll("h5", "admin");
System.out.println("修改之后的projectPath:" + projectPath);


try {
EOWtoipAppVersion wtoipAppVersionSelect = new EOWtoipAppVersion();
wtoipAppVersionSelect.setDelete_flag("0");//删除标志
wtoipAppVersionSelect.setApp_conf_flag("1");//激活标志
wtoipAppVersionSelect.setVersion_type(type);


List<EOWtoipAppVersion> wtoipAppVersions = ROWtoipAppVersionUtil.selectByExample(wtoipAppVersionSelect);
if (wtoipAppVersions.size() != 1) {
System.out.println("没有所需要下载的文件");
return;
}

String relativeFilePath = wtoipAppVersions.get(0).getVersion_url();// 文件在服务器上面的相对路径的名字(+文件名字)
String filefix = relativeFilePath.substring(relativeFilePath.lastIndexOf("."));// 文件的后缀名字
String downLoadFileName = null;

if (type.equals("0")||type.equals("1")) {
// 用户版
downLoadFileName = "huiju-release"+filefix;
} else if (type.equals("2")||type.equals("3")) {
// 商家版
downLoadFileName = "huijumerchant-release"+filefix;

response.setHeader("Content-disposition", "attachment; filename="+downLoadFileName);

URL url = new URL(projectPath+relativeFilePath);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
DataInputStream input = new DataInputStream(conn.getInputStream());
DataOutputStream output = new DataOutputStream(response.getOutputStream());

byte[] buffer = new byte[1024 * 8];
int count = 0;
while ((count = input.read(buffer)) > 0) {
output.write(buffer, 0, count);
}
output.close();
input.close();


} catch (Exception e) {
System.out.println("apk下载失败,错误信息" + e);

}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值