怎样通过java实现服务器上文件下载?

怎样通过java实现服务器上文件下载?,第1张

在jsp/servlet中断点/多线程下载文件

<%@ page import="javaioFile" %>

<%@ page import="javaioIOException" %>

<%@ page import="javaioOutputStream" %>

<%@ page import="javaioRandomAccessFile" %>

<%!

    public void downloadFile(HttpServletRequest request, HttpServletResponse response, File file) throws IOException {

        RandomAccessFile raf = new RandomAccessFile(file, "r");

        javaioFileInputStream fis = new javaioFileInputStream(rafgetFD());

        responsesetHeader("Server", "wwwtrydonecom");

        responsesetHeader("Accept-Ranges", "bytes");

        long pos = 0;

        long len;

        len = raflength();

        if (requestgetHeader("Range") != null) {

            responsesetStatus(HttpServletResponseSC_PARTIAL_CONTENT);

            pos = LongparseLong(requestgetHeader("Range")

                    replaceAll("bytes=", "")

                    replaceAll("-", "")

            );

        }

        responsesetHeader("Content-Length", LongtoString(len - pos));

        if (pos != 0) {

            responsesetHeader("Content-Range", new StringBuffer()

                    append("bytes ")

                    append(pos)

                    append("-")

                    append(LongtoString(len - 1))

                    append("/")

                    append(len)

                    toString()

            );

        }

        responsesetContentType("application/octet-stream");

        responsesetHeader("Content-Disposition", new StringBuffer()

                append("attachment;filename=\"")

                append(filegetName())

                append("\"")toString());

        rafseek(pos);

        byte[] b = new byte[2048];

        int i;

        OutputStream outs = responsegetOutputStream();

        while ((i = rafread(b)) != -1) {

            outswrite(b, 0, i);

        }

        rafclose();

        fisclose();

    }

%>

<%

    String filePath = requestgetParameter("file");

    filePath = applicationgetRealPath(filePath);

    File file = new File(filePath);

    downloadFile(request, response, file);

%>

  方法如下:

找到菜单 window → Show View → Servers,打开Servers视图标签,部署的Tomcat 服务

在这个服务上右击,选择“Add Deployment”

在新打开的对话框中,有一个Project项,选择要部署的项目

点击“Finish”完成部署

这样项目就部署到Tomcat里面去了

String realpath = ServletActionContextgetServletContext()getRealPath("/upload") ;//获取服务器路径

String[] targetFileName = uploadFileName;

for (int i = 0; i < uploadlength; i++) {

File target = new File(realpath, targetFileName[i]);

FileUtilscopyFile(upload[i], target);

//这是一个文件复制类copyFile()里面就是IO操作,如果你不用这个类也可以自己写一个IO复制文件的类

}

其中private File[] upload;// 实际上传文件

private String[] uploadContentType; // 文件的内容类型

private String[] uploadFileName; // 上传文件名

这三个参数必须这样命名,因为文件上传控件默认是封装了这3个参数的,且在action里面他们应有get,set方法

如何用Java实现Web服务器 一、HTTP协议的作用原理

WWW是以Internet作为传输媒介的一个应用系统,WWW网上最基本的传输单位是Web网页。WWW的工作基于客户机/服务器计算模型,由Web 浏览器(客户机)和Web服务器(服务器)构成,两者之间采用超文本传送协议(HTTP)进行通信。HTTP协议是基于TCP/IP协议之上的协议,是Web浏览器和Web服务器之间的应用层协议,是通用的、无状态的、面向对象的协议。HTTP协议的作用原理包括四个步骤:

(1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。

(2) 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是GET或POST命令(POST用于FORM参数的传递)。GET命令的格式为:

GET 路径/文件名 HTTP/10

文件名指出所访问的文件,HTTP/10指出Web浏览器使用的HTTP版本。

(3) 应答:Web浏览器提交请求后,通过HTTP协议传送给Web服务器。Web服务器接到后,进行事务处理,处理结果又通过HTTP传回给Web浏览器,从而在Web浏览器上显示出所请求的页面。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 怎样通过java实现服务器上文件下载?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情