linux服务器上部署java项目,本地windos通过浏览器访问项目怎么下载项目目录下的文件到本

linux服务器上部署java项目,本地windos通过浏览器访问项目怎么下载项目目录下的文件到本,第1张

既然使用了java,实现这种功能就与OS无关了,否则叫什么跨平台。其实用浏览器下载服务器端文件比较容易:

首先,要让用户能找到并选择文件(jsp里实现,部分代码)

String realPath=request.getSession().getServletContext().getRealPath("")+"/documents"//项目根目录下文件路径

File fileDir=new File(realPath)

String[] fileList=fileDir.list()//返回目录下文件名称数组

for(int i=0i<fileList.lengthi++){

//这里遍历出来要显示的文件名,加到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()

}

}

使用BAT下载Linux,可以先去官网下载相应的Linux安装文件,比如Ubuntu、CentOS等,然后使用BT下载工具将文件下载到本地。也可以进行网络安装,即使用BAT将远程安装ISO文件下载到本地,并使用CD或USB安装到本地硬盘上。

可以直接使用lrzsz工具即可完成,首先需要安装这个软件,yim install lrzsz -y.

然后把想要下载到本地的文件执行 sz a.txt,就可以直接另存到本地了。

如果你想上传到linux服务器,可以直接拖拽文件到想要的目录即可,即可直接上传。

除了这个方法之外,还可以使用vsftp工具来下载文件,前提是搭建vsftp工具,开启21.22端口访问,然后本地通过ftp工具进行连接即可直接和linux服务器通信了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/9033317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-24
下一篇 2023-04-24

发表评论

登录后才能评论

评论列表(0条)

保存