java下載http文件
『壹』 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");
}
}
自己把源地址修改下