『壹』 怎樣通過java實現伺服器上文件下載
用HttpClient(commons httpclient)包,模擬一個Get請求,發送到網址172.16.30.230/文件地址。這個文件地址不能是E/Map/123.txt,必須是暴露在伺服器中的應用里的。就像你寫的應用里的一個jsp頁面的目錄。
成功發送get請求後,就會得到response,裡面有流。就是你下載的文件,然後可以通過FileOutputStream,指定你輸出目錄,寫到磁碟上。
『貳』 JavaWeb下載文件,怎麼獲取文件下載完畢的狀態
在Javaweb中,上傳下載是經常用到的功能,對於文件上傳,瀏覽器在上傳的過程中是以流的過程將文件傳給伺服器,一般都是使用commons-fileupload這個包實現上傳功能,因為commons-fileupload依賴於commons-io這個包,所以需要下載這兩個包commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar。
1、搭建環境
創建Web項目,將包導入到項目lib下
3、實現文件下載
(第一種文件下載)
注意:該代碼是直接訪問Servlet類的
?
04142package com.load;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//直接使用Http://localhost:8080/Test1/download進行下載,但是這個有缺陷,如果下載文件名中有中文,就會變成亂碼現象!@WebServlet("/download")public class download extends HttpServlet {private static final long serialVersionUID = 1L;public download() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/plain;charset=utf-8");response.setCharacterEncoding("utf-8");response.setHeader("Location","中文.txt");response.setHeader("Content-Disposition", "attachment; filename=" + "賬號.txt");OutputStream outputStream = response.getOutputStream();InputStream inputStream = new FileInputStream("E:/loads"+"/賬號.txt");byte[] buffer = new byte[1024];int i = -1;while ((i = inputStream.read(buffer)) != -1) {outputStream.write(buffer, 0, i);}outputStream.flush();outputStream.close();}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}(第二種下載方法)
新建jsp頁面選擇下載
<%@ page language="java" contentType="text/html; charset=UTF-8"
創建Servlet類進行下載(注意:該下載如果文件名是中文的話,一樣會出現亂碼現象)
package com.load;
(第三種下載的方法)
同上的jsp頁面代碼,這里就不再重復了。
新建Serlvet類,實現下載功能(注意:這里文件名就算是中文名,也不會出現亂碼問題了!)
package com.load;
『叄』 Javaweb中的文件下載實現
需要在響應頭部加上一些標示,告訴瀏覽器這個是文件下載。
如果你用了框架比如struts,需要加如下配置
<result name="success" type="stream">
<param name="contentType">application/octet-stream;charset=ISO8859-1</param>
<param name="inputName">fileStream</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">2048</param>
</result>
如果沒有用框架,就手動在返回對象添加這些contentType
『肆』 如何在官網下載Java的API文檔
題主你好,
首先導航到jdk下載的首頁:
*.如果題主有圖形界面的話, 直接雙擊api步錄下的index.html就可以.
-----
希望可以幫到題主, 歡迎追問.
『伍』 JAVA 文件下載問題
如果是本地伺服器的話,應該把文件發布,會生成一個url ,用這個url就可以下載了。
『陸』 請問一個java的文件下載的問題,為什麼我的下載每次都看不到進度條,而是一下子就下好了呢
建立新的線程來處理下載。去看Thread的API有詳細說明。例如本來是:
downloading();
System.out.println("下載完成");
就改成:
class DownloadListener {//這個class自己找個地方放。
public void downloadInProgress(double percent) {
System.out.println("已下載" + percent);
}
public void downloadCompleted() {
System.out.println("已下載完成");
}
}
//從這里開始應該被改成的內容
DownloadListener downloadListener = new DownloadListener();
new Thread() {
public void run() { //這里寫第二線程的內容
downloading(downloadListener);//於是downloadListener被傳入了downloading函數,就可以在downloading函數內部通過呼叫downloadListener的downloadInProgress和downloadCompleted來通知第一線程下載情況。
}
}.start(); //第一線程會在這里啟動第二線程,然後不管第二線程執行了什麼是否完成,直接執行下一句。
System.out.println("第二線程已經啟動");
//例子里很多System.out.println是為了簡明。實際情況一般是修改一個給用戶看的狀態欄JLabel,這里下載進行中時,應該是更新一個JProgressBar。
『柒』 java 文件和圖片下載處理
用<a>標簽把你的圖片當作鏈接的形式包起來,然後點擊的時候下載的href屬性地址里的文件類容指向你伺服器上的文件
『捌』 Java文件下載怎麼實現的
下載就很簡單了
把你要下載的文件做成超級鏈接,可以不用任何組件
比如說
下載一個word文檔
<a href="名稱.doc">名稱.doc</a>
路徑你自己寫
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.net.HttpURLConnection;
import java.net.ProtocolException;
import java.net.URI;
import java.net.URL;
import java.util.Random;
/**
*
* 實現了下載的功能*/
public class SimpleTh {
public static void main(String[] args){
// TODO Auto-generated method stub
//String path = "http://www.7cd.cn/QingTengPics/倩女幽魂.mp3";//MP3下載的地址
String path ="http://img.99luna.com/music/%CF%EB%C4%E3%BE%CD%D0%B4%D0%C5.mp3";
try {
new SimpleTh().download(path, 3); //對象調用下載的方法
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String getFilename(String path){//獲得文件的名字
return path.substring(path.lastIndexOf('/')+1);
}
public void download(String path,int threadsize) throws Exception//下載的方法
{//參數 下載地址,線程數量
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();//獲取HttpURLConnection對象
conn.setRequestMethod("GET");//設置請求格式,這里是GET格式
conn.setReadTimeout(5*1000);//
int filelength = conn.getContentLength();//獲取要下載文件的長度
String filename = getFilename(path);
File saveFile = new File(filename);
RandomAccessFile accessFile = new RandomAccessFile(saveFile, "rwd");
accessFile.setLength(filelength);
accessFile.close();
int block = filelength%threadsize ==0?filelength/threadsize:filelength/threadsize+1;
for(int threadid = 0;threadid<=threadsize;threadid++){
new DownloadThread(url,saveFile,block,threadid).start();
}
}
private final class DownloadThread extends Thread{
private URL url;
private File saveFile;
private int block;//每條線程下載的長度
private int threadid;//線程id
public DownloadThread(URL url,File saveFile,int block,int threadid){
this.url = url;
this.saveFile= saveFile;
this.block = block;
this.threadid = threadid;
}
@Override
public void run() {
//計算開始位置的公式:線程id*每條線程下載的數據長度=?
//計算結束位置的公式:(線程id+1)*每條線程下載數據長度-1=?
int startposition = threadid*block;
int endposition = (threadid+1)*block-1;
try {
try {
RandomAccessFile accessFile = new RandomAccessFile(saveFile, "rwd");
accessFile.seek(startposition);//設置從什麼位置寫入數據
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.setReadTimeout(5*1000);
conn.setRequestProperty("Range","bytes= "+startposition+"-"+endposition);
InputStream inStream = conn.getInputStream();
byte[]buffer = new byte[1024];
int len = 0;
while((len = inStream.read(buffer))!=-1){
accessFile.write(buffer, 0, len);
}
inStream.close();
accessFile.close();
System.out.println("線程id:"+threadid+"下載完成");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
『玖』 JAVA實現文件下載,瀏覽器端得到數據沒反應
int length = b.length;
response.setContentType("application/vnd.ms-excel");//文件格式,此處設置為excel
response.setHeader("Content-Disposition",
"attachment;filename=文件.xls");//此處需要設置下載文件的默認名稱
response.setContentLength(length);
java.io.OutputStream o = response.getOutputStream();
o.write(reportContent, 0, length);
o.flush();
out.clear();
out = pageContext.pushBody();
response.flushBuffer();
『拾』 為什麼我下載的所有JAVA文件都打不開
設置java_home了嗎?
想要刪掉環境變數PATH只要把c:/java/jdk/bin(具體看你的路徑)的「;」前的刪掉就好了
打開path 點下面那一大串,按home鍵(為了將游標移到開頭)
把你javac.exe的路徑(只要文件夾路徑)加到path然後加「;」號
最後在cmd 里測試下 java-version