㈠ 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();
}
}
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";
//这样可以吗