導航:首頁 > 編程語言 > 文件下載java

文件下載java

發布時間:2022-02-05 09:30:01

『壹』 怎樣通過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"

pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>下載</title></head><body><a href="../DoDownloadServlet?filename=呵呵.txt">點擊下載</a></body></html>

創建Servlet類進行下載(注意:該下載如果文件名是中文的話,一樣會出現亂碼現象)

package com.load;

import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.jsp.JspFactory;import javax.servlet.jsp.PageContext;import org.hsqldb.lib.StringUtil;import com.jspsmart.upload.SmartUpload;import com.jspsmart.upload.SmartUploadException;@WebServlet("/DoDownloadServlet")public class DoDownloadServlet extends HttpServlet {private static final long serialVersionUID = 1L;public DoDownloadServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//得到下載文件的名稱//String filename = request.getParameter("filename");//String filename = new String(FileName.getBytes("iso8859-1"),"UTF-8");//新建SmartUpload對象SmartUpload su = new SmartUpload();PageContext pagecontext = JspFactory.getDefaultFactory().getPageContext(this, request, response, null, true, 8192, true);//上傳初始化su.initialize(pagecontext);//設置禁止打開該文件su.setContentDisposition(null);//下載文件try {su.downloadFile("/listener/"+filename);} catch (SmartUploadException e) {// TODO Auto-generated catch blocke.printStackTrace();}}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

(第三種下載的方法)

同上的jsp頁面代碼,這里就不再重復了。

新建Serlvet類,實現下載功能(注意:這里文件名就算是中文名,也不會出現亂碼問題了!)

package com.load;

import java.io.BufferedInputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.jsp.JspFactory;import javax.servlet.jsp.PageContext;import org.hsqldb.lib.StringUtil;import com.jspsmart.upload.SmartUpload;import com.jspsmart.upload.SmartUploadException;@WebServlet("/DoDownloadServlet")public class DoDownloadServlet extends HttpServlet {private static final long serialVersionUID = 1L;public DoDownloadServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//獲得文件名稱String path1 = request.getParameter("filename");//獲得路徑名稱String path = request.getSession().getServletContext().getRealPath("/listener/"+path1);// path是根據日誌路徑和文件名拼接出來的File file = new File(path);String filename = file.getName();try {//判斷是否是IE11Boolean flag= request.getHeader("User-Agent").indexOf("like Gecko")>0;//IE11 User-Agent字元串:Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko//IE6~IE10版本的User-Agent字元串:Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.0; Trident/6.0)if (request.getHeader("User-Agent").toLowerCase().indexOf("msie") >0||flag){filename = URLEncoder.encode(filename, "UTF-8");//IE瀏覽器}else {//先去掉文件名稱中的空格,然後轉換編碼格式為utf-8,保證不出現亂碼,//這個文件名稱用於瀏覽器的下載框中自動顯示的文件名filename = new String(filename.replaceAll(" ", "").getBytes("UTF-8"), "ISO8859-1");//firefox瀏覽器//firefox瀏覽器User-Agent字元串://Mozilla/5.0 (Windows NT 6.1; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0} InputStream fis = new BufferedInputStream(new FileInputStream(path));byte[] buffer;buffer = new byte[fis.available()];fis.read(buffer);fis.close();response.reset();response.addHeader("Content-Disposition", "attachment;filename=" +filename);response.addHeader("Content-Length", "" + file.length());OutputStream os = response.getOutputStream();response.setContentType("application/octet-stream");os.write(buffer);// 輸出文件os.flush();os.close();} catch (IOException e) {e.printStackTrace();}System.out.println(filename);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

『叄』 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

閱讀全文

與文件下載java相關的資料

熱點內容
為什麼安卓機拍照那麼丑 瀏覽:694
伺服器綁定雲產品實例 瀏覽:313
程序員認真工作被開除 瀏覽:453
程序員送蘋果 瀏覽:143
小程序繪圖源碼 瀏覽:968
如何購買域名和伺服器阿里雲 瀏覽:671
伺服器地址及埠在哪裡 瀏覽:695
騰訊雲伺服器有危險嗎 瀏覽:798
復制文件到文件夾php 瀏覽:10
java注釋正則表達式 瀏覽:858
java連接遠程oracle 瀏覽:91
javamainargs 瀏覽:758
金華數據文檔加密軟體公司 瀏覽:853
內心極度擔心解壓的音樂 瀏覽:896
穿搭技巧app卡色配什麼顏色 瀏覽:594
程序員得結石 瀏覽:131
查公司薪資的app叫什麼 瀏覽:410
壓縮包多個文件夾圖片連續看 瀏覽:486
linuxmysql無法用命令啟動 瀏覽:441
地稅身份認證用什麼ApP 瀏覽:530