導航:首頁 > 文件類型 > java下載linux上文件

java下載linux上文件

發布時間:2023-06-12 21:15:37

linux伺服器上部署java項目,本地windos通過瀏覽器訪問項目怎麼下載項目目錄下的文件到本

既然使用了java,實現這種功能就與OS無關了,否則叫什麼跨平台。其實用瀏覽器下載伺服器端文件比較容易:
首先,要讓用戶能找到並選擇文件(jsp里實現,部分代碼
String realPath=request.getSession().getServletContext().getRealPath("")+"/documents";//項目根目錄下文件路徑
File fileDir=new File(realPath);
String[] fileList=fileDir.list();//返回目錄下文件名稱數組
for(int i=0;i<fileList.length;i++){
//這里遍歷出來要顯示的文件名,加到td里,後面再加上個「下載」按鈕
//使用隱藏input記錄文件名和路徑fileName,filePath

其次,提交下載請求並下載
使用form提交用戶選擇的文件名,Action中部分代碼:
String fileName=req.getParameter("fileName");//HttpServletRequest req
String filePath=req.getParameter("filePath");
try {
FileDownload.Download(filePath+"/"+fileName, "attachment", res);
} catch (Exception e) {
e.printStackTrace();
}
下面是 FileDownload類:
package com.aerolink.aocs.util.fileUtil;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

/**
* <p>
* Title: FileDownload類
* </p>
* <p>
* Description: 實現文件下載功能
* </p>
* <p>
* 將文件名,HttpServletRequest,HttpServletRespons傳給靜態方法Download即可
* </p>
* <p>
* Copyright: Copyright (c) 2005
* </p>
* <p>
* Company: 北京天航信達信息技術有限公司
* </p>
*
* @author 陶源
* @version 2.0
*/
public class FileDownload {

/**
* @param fileName
* @param res
* @throws FileNotFoundException
* @throws IOException
*/
public static void Download(String fileName,
HttpServletResponse res)
throws FileNotFoundException, IOException {

String fileContentType = "application/octet-stream";
String fileDownloadType = "attachment";

long totalsize = 0;
// 取得要傳輸的文件,實際應用是可以將文件路徑以參數的形式傳入
File f = new File(fileName);
// 取文件長度
long filelength = f.length();
byte[] b = new byte[1024];

// 設置文件輸出流
FileInputStream fin = new FileInputStream(f);
DataInputStream in = new DataInputStream(fin);

int pos = fileName.lastIndexOf(java.io.File.separator);
String fn = new String(fileName.substring(pos + 1).getBytes("gb2312"),
"ISO8859-1");

// 設置相應頭信息,讓下載的文件顯示保存信息
res.setContentType(fileContentType);
res.setHeader("Content-Disposition", fileDownloadType + ";filename=\""
+ fn + "\"");
// 確定長度
String filesize = Long.toString(filelength);
// 設置輸出文件的長度
res.setHeader("Content-Length", filesize);
// 取得輸出流
ServletOutputStream servletOut = res.getOutputStream();
// 發送文件數據,每次1024位元組,最後一次單獨計算
while (totalsize < filelength) {
totalsize += 1024;
if (totalsize > filelength) {
// 最後一次傳送的位元組數
byte[] leftpart = new byte[1024 - (int) (totalsize - filelength)];
// 讀入位元組數組
in.readFully(leftpart);
// 寫入輸出流
servletOut.write(leftpart);
} else {
// 讀入1024個位元組到位元組數組 b
in.readFully(b);
// 寫和輸出流
servletOut.write(b);
}
}
servletOut.close();
}

/**
* @param fileName
* @param fileDownloadType
* @param res
* @throws FileNotFoundException
* @throws IOException
*/
public static void Download(String fileName, String fileDownloadType,
HttpServletResponse res)
throws FileNotFoundException, IOException {

String fileContentType = null;

if (fileName.endsWith(".doc")) {
fileContentType = "application/msword";
} else if (fileName.endsWith(".pdf")) {
fileContentType = "application/pdf";
} else if (fileName.endsWith(".xls")) {
fileContentType = "application/vnd-ms-excel";
} else if (fileName.endsWith(".txt")) {
fileContentType = "text/plain";
} else {
fileContentType = "application/octet-stream";
}

long totalsize = 0;
// 取得要傳輸的文件,實際應用是可以將文件路徑以參數的形式傳入
File f = new File(fileName);
// 取文件長度
long filelength = f.length();
byte[] b = new byte[1024];

// 設置文件輸出流
FileInputStream fin = new FileInputStream(f);
DataInputStream in = new DataInputStream(fin);

int pos = fileName.lastIndexOf(java.io.File.separator);
String fn = new String(fileName.substring(pos + 1).getBytes("gb2312"),
"ISO8859-1");

// 設置相應頭信息,讓下載的文件顯示保存信息
res.setContentType(fileContentType);
res.setHeader("Content-Disposition", fileDownloadType + ";filename=\""
+ fn + "\"");
// 確定長度
String filesize = Long.toString(filelength);
// 設置輸出文件的長度
res.setHeader("Content-Length", filesize);
// 取得輸出流
ServletOutputStream servletOut = res.getOutputStream();
// 發送文件數據,每次1024位元組,最後一次單獨計算
while (totalsize < filelength) {
totalsize += 1024;
if (totalsize > filelength) {
// 最後一次傳送的位元組數
byte[] leftpart = new byte[1024 - (int) (totalsize - filelength)];
// 讀入位元組數組
in.readFully(leftpart);
// 寫入輸出流
servletOut.write(leftpart);
} else {
// 讀入1024個位元組到位元組數組 b
in.readFully(b);
// 寫和輸出流
servletOut.write(b);
}
}
servletOut.close();
}
}

㈡ java程序怎樣讀取linux系統下的文件

File file = new File("/home/my.txt"); 這樣子就可以讀取到linux下的文件了。

㈢ 從linux伺服器上下載文件

用apache 把web根目錄設置為系統根,打開apache列目錄的許可權

㈣ java 使用ftp 下載文件在windows環境下正常,在linux下載不了

GET <服務端:下載的檔名> <本地端:存放的檔名>
PUT <本地端:回上傳的檔名> <服務端:存放的檔名>

下載答:
ex:從伺服器端下載一個檔名為 linux.rar 的文件到本地路徑 C:\,存放檔名為 LINUX_S.RAR。

ftp> get linux.rar c:\LINUX_S.RAR

上傳:
ex:從本地端路徑 C:\ 上傳一個檔名為 LINUX_S.RAR 的文件到伺服器,存放檔名為 linux.rar。

ftp> put c:\LINUX_S.RAR linux.rar

㈤ java中在linux環境下,運用org.apache.commons.net.ftp.FTPClient包,下載FTP服務上的文件,報出異常:

1,確保手工用FTP客戶端連接沒問題。
2,手工沒問題,程序也應該沒問題才是。
3,確保程序中安全CLOSE連接,FTP伺服器也是有連接限制的。
4,適當考慮重起一下FTP伺服器。

㈥ java怎麼把linux目錄下的文件下載到本地window

一般伺服器端不用你寫,裝一個ftp服務端程序就行了。你只需要用ftp寫一個客戶端程序即可。

㈦ java程序怎樣讀取linux系統下的文件

java是跨平台語言,在linux上讀文件跟在windows上讀文件是一樣的 只是文件路徑不一樣,可以用File對象和FileInputSteam來讀齲但要注意文件編碼問題。 如果有中文請做適當的編碼轉換,通常情況下Linux的默認字元編碼為UTF-8編碼方式,

㈧ java文件下載問題。項目war包發布到weblogic上(linux機器上),要下載的文件在項目的war包中。

action是war包中的吧:
String filepath = ServletActionContext.getServletContext().getRealPath(File.separator) + "
download"+File.separator+"manual.doc";
//這樣可以嗎

閱讀全文

與java下載linux上文件相關的資料

熱點內容
英制18牙怎麼編程 瀏覽:964
嗨學網課堂直播app下載 瀏覽:311
qq存儲文件從哪裡找 瀏覽:495
幫助文件放在哪裡 瀏覽:984
手錶第三方APP是什麼 瀏覽:546
iphoneqq助手網路錯誤 瀏覽:448
程序員周報模板 瀏覽:737
計劃性定時任務文件路徑 瀏覽:671
什麼app可以學老鼠叫 瀏覽:253
java按符號截取字元串 瀏覽:40
區委網路中心干什麼的 瀏覽:802
旅行團網站有哪些 瀏覽:101
fileoperations頭文件 瀏覽:966
excel21個文件匯總 瀏覽:510
word加密封線 瀏覽:725
三菱運動控制器教程 瀏覽:491
道通的數據流是從哪裡分析的 瀏覽:540
驗證碼破譯工具 瀏覽:239
js中string轉化為時間格式 瀏覽:523
聯想g460升級win10 瀏覽:844

友情鏈接