当前位置:首页 » 编程语言 » java下载http文件

java下载http文件

发布时间: 2022-09-20 12:41:35

‘壹’ java如何将本地文件返回给对方一个下载链接(http方式下载)

根据http协议来做,
响应的时候 Content-Type 类型进行设置,当然你需要对外提供这个接口,将需要下载的本地文件以流的形式传输

‘贰’ 用Java HTTP下载文件获取失败,不明原因

你先得从头里面读取文件大小啊,然后你再设置需要下载文件的Range啊,再者byte[]这要设置成1啊,这是一个字节,不是1k,设置大一些,别太小了,要不你用buffer就没有意义了

‘叁’ java怎样读取http文件服务器上的文件列表并下载

把要下载的文件名存在数据库中,载入页面通过servlet或者action或者采用javaBean读取数据库数据,然后遍历出来,再通过servlet或者action的outputstream下载即可

‘肆’ java 获得http下载文件的真实名称

有两种获取链接文件名的方法:

第一种:从连接URL,从描述中获取

比如这种地址:

http://book.booktxt.com/txtbuk/20130421/xuanhuan/2013043601180.rar

‘伍’ 如何用Java下载网上的文件

这个涉及到文件的映射与跳转了,想要用JAVA写的话,最起码你传给它的应该是实质性的直接链接,这样它才可以建立连接,通过输入输出流。当然,如果你够厉害的话,也可以自己通过程序先对网址进行自动性的处理,然后分析出实质性的文件可靠地址,就可以下载了。
我看了一下,你的这个地址不是直接的链接,你发下载请求的时候人家直接在后台导向目标文件了。

‘陆’ java里http服务器如何将文件制成一个下载路径

/**
*文件下载
*/
@RequestMapping("/downloadfile")
(StringresStr,HttpServletResponseresponse){
PrintWriterpw=null;
StringBuffersb=newStringBuffer();

try{
StringfileName="文件名";
response.setCharacterEncoding("UTF-8");
response.setContentType("application/x-msdownload");
response.addHeader("Cache-Control","no-cache,no-store,must-revalidate");
response.addHeader("charset","utf-8");
response.addHeader("Pragma","no-cache");
response.setHeader("Content-Disposition","attachment;filename=""+fileName+"";filename*=utf-8''"+fileName);
sb.append(resStr);
pw=response.getWriter();
pw.write(sb.toString());
pw.close();
response.flushBuffer();
}catch(IOExceptione){
logger.info("下载文件出错");
e.printStackTrace();
if(pw!=null){
pw.close();
}
}finally{
if(pw!=null){
pw.close();
}
}
}

resStr 字段传写入文件里的内容

‘柒’ 用JAVA下载HTTP文件时遇到问题

importjava.net.*;
importjava.io.*;
publicclassURLConnectionDemo{
publicstaticvoidmain(String[]args)throwsException{
URLurl=newURL("http://www.scp.e.cn/pantoschoolzz/BG/Bord/Message/DownloadMessageAttachment.aspx?ID=215");
URLConnectionuc=url.openConnection();
StringfileName=uc.getHeaderField(6);
fileName=URLDecoder.decode(fileName.substring(fileName.indexOf("filename=")+9),"UTF-8");
System.out.println("文件名为:"+fileName);
System.out.println("文件大小:"+(uc.getContentLength()/1024)+"KB");
Stringpath="D:"+File.separator+fileName;
FileOutputStreamos=newFileOutputStream(path);
InputStreamis=uc.getInputStream();
byte[]b=newbyte[1024];
intlen=0;
while((len=is.read(b))!=-1){
os.write(b,0,len);
}
os.close();
is.close();
System.out.println("下载成功,文件保存在:"+path);
}
}

//给你一个下载的例子吧,仅供参考。

‘捌’ java下载服务器上的文件到客户端

java编程方法下载服务器上的文件到本地客服端,代码如下:

importjava.io.BufferedWriter;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.InputStream;
importjava.net.URL;
importjava.net.URLConnection;

publicclassDownLoad{
publicstaticvoiddownloadFile(URLtheURL,StringfilePath)throwsIOException{
FiledirFile=newFile(filePath);
if(!dirFile.exists()){
//文件路径不存在时,自动创建目录
dirFile.mkdir();
}
//从服务器上获取图片并保存
URLConnectionconnection=theURL.openConnection();
InputStreamin=connection.getInputStream();
FileOutputStreamos=newFileOutputStream(filePath+"\123.png");
byte[]buffer=newbyte[4*1024];
intread;
while((read=in.read(buffer))>0){
os.write(buffer,0,read);
}
os.close();
in.close();
}
publicstaticvoidmain(String[]args){
//下面添加服务器的IP地址和端口,以及要下载的文件路径
StringurlPath="http://服务器IP地址:端口/image/123.png";

//下面代码是下载到本地的位置
StringfilePath="d:\excel";

URLurl=newURL(urlPath);

try{

downloadFile(url,filePath);

}catch(IOExceptione){

e.printStackTrace();

}

}

}

‘玖’ java,http下载文件

http是流传输,一次请求中你是不能将流截断的,如果想做到你说的只有两种形式:
1、就是你使用的方式,多段读取(其实就是断点续传的原理),多个请求,每个请求请求一部分,如果你觉得效率低可以从两方面优化:
(1)不要用URLConnecion,而使用HttpClient之类的工具包进行请求
(2)使用多线程并发请求,其实就是断点续传了,迅雷就是几个线程一起下嘛
2、只请求一次,请求全部的,将全部流缓存到内存中(byte[]),然后根据你的需要分段截取,写入文件

‘拾’ 请Java大牛帮忙,关于HTTP文件下载,功能可以实现,但是下载后总是有个别文件不能被删除.


importjava.io.*;
importjava.net.*;
importjava.util.Scanner;


publicclassTest{
privatestaticStringfileName="http://localhost/file/1.jpg";
publicstaticvoidmain(Stringargs[])throwsException{
URLurl=newURL(fileName);
URLConnectionuc=url.openConnection();
uc.connect();
HttpURLConnectionhuc=(HttpURLConnection)uc;
if(huc.getResponseCode()!=HttpURLConnection.HTTP_OK){
//判断是否成功连接到http,如果不能连接则返回
System.out.println("can'tconnect");
return;
}

Filef=newFile("D://text.jpg");//把文件复制到D盘的text.jpg中
InputStreamin=(uc.getInputStream());//打开输入流
byte[]data=newbyte[1024*10];
intl=in.read(data);
if(!f.exists())f.createNewFile();
FileOutputStreamout=newFileOutputStream(f);
while(l!=-1){
out.write(data,0,l);
l=in.read(data);
}
out.flush();
out.close();
System.out.println("OK");
}
}

自己把源地址修改下

热点内容
vc60非静态编译 发布:2025-01-11 10:51:32 浏览:613
电脑上怎么解压缩文件 发布:2025-01-11 10:51:31 浏览:782
枪战王者如何用账号密码登录 发布:2025-01-11 10:30:56 浏览:936
mysql在linux下安装 发布:2025-01-11 10:30:49 浏览:843
数据库copy 发布:2025-01-11 10:26:06 浏览:533
unity清理缓存 发布:2025-01-11 10:25:23 浏览:466
优酷视频双击上传 发布:2025-01-11 10:24:41 浏览:963
存储脐带胎儿干细胞 发布:2025-01-11 10:18:36 浏览:330
实简ftp软件怎么改服务器文件 发布:2025-01-11 10:09:39 浏览:555
qb充值源码 发布:2025-01-11 10:00:21 浏览:27