本地访问部署到云服务器上项目;怎么点击该下载;就把下载的文件下载到本地
(我显示的文件都是先以做成每个超级链接用数据库保存的);所以这里我用到了httpconnet;但是问题这里提供了下载路径;总是下载到我的云服务器上去了;所以请问大家怎么才能保存到我本地呢
``` public static String downLoadByUrl(String urlStr,String fileName,String savePath) throws IOException {
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(5*1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//得到输入流
InputStream inputStream = conn.getInputStream();
//获取自己数组
byte[] getData = readInputStream(inputStream);
//文件保存位置
File saveDir = new File(savePath);
//判断该文件夹是否存在
if(!saveDir.exists()){
//不存在则创建【mkdir():创建一级目录;mkdirs()可创建多级目录】
saveDir.mkdirs();
}
File file = new File(saveDir+File.separator+fileName);
FileOutputStream fos = new FileOutputStream(file);
fos.write(getData);
if(fos!=null){
fos.close();
}
if(inputStream!=null){
inputStream.close();
}
return "info:"+url+"pdf文件下载成功!(download success)";
}
FileOutputStream fos = new FileOutputStream(file);
->
FileOutputStream fos = response.getOutputStream();
后面加上
response.setHeader("content-disposition", "attachment;filename=" + fileName);
这应该不是下载到服务器上,而是你通过网络路径获取到该文件的输出流的时候,又在服务器上生成了一次,而不是返回到本地中,如果你本地还要下载的话,直接用地址栏访问就可以下载了,
location.href='http://ip:端口号/项目名/该文件所在项目下的目录/xxxxx.pdf'
当然,如果访问路径经过配置后,可能就不是这么访问的了,不过都是类似的
还有一种就是,如果文件名称为中文,浏览器不支持中文的话,可以将文件以流的形式返回到浏览器上,
/**
* 通过流把文件传到前台下载
*
* @param request
* @param response
* @param fujianid
* 对应的附件id
*/
public void findfile(HttpServletRequest request,
HttpServletResponse response,
@RequestParam("fujianid") String ppFujianId) throws IOException {
ServletOutputStream out = null;
FileInputStream ips = null;
Fujian mmFujian = ddService.findOne(ppFujianId);
try {
String url = mmFujian.getFujianurl();
// 获取项目根目录地址
String basePath = request.getServletContext().getRealPath("/");
if (basePath.endsWith("/")) {
basePath += "";
} else {
basePath += "/";
}
// 获取文件存放的路径
File file = new File(basePath + url);
String newFileName = mmFujian.getFujianmingcheng();
if (!file.exists()) {
// 如果文件不存在就跳出
return;
}
ips = new FileInputStream(file);
response.setContentType("multipart/form-data");
// 为文件重新设置名字,采用数据库内存储的文件名称
response.addHeader("Content-Disposition", "attachment; filename=\""
+ new String(newFileName.getBytes("UTF-8"), "ISO8859-1")
+ "\"");
out = response.getOutputStream();
// 读取文件流
int len = 0;
byte[] buffer = new byte[1024 * 10];
while ((len = ips.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
out.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (ips != null) {
ips.close();
}
if (out != null) {
out.close();
}
} catch (IOException e) {
System.out.println("关闭流出现异常");
e.printStackTrace();
}
}
return;
}
这是我之前用的,前面获取文件路径不一定和我一样,