Java_常瑞鹏 实现文件上传与下载

java

文件下载

因为要下载的文件可以是各种类型的文件,所以要将文件传送给客户端,其相应内容应该被当做二进制来处理,所以应该调用 方法返回 ServeltOutputStream对象来向客户端写入文件内容。

下载案例

遍历上传目录下的所有文件显示给用户,并允许用户完成下载。

(读取某一个文件夹下的所有的文件,存到集合里面List,再存到request作用域范围中)ListFileServelt—(将所有的文件列表显示)Listfiles.jsp-----DownloaServlet.java

private String id;

private String savename; //上传文件的名称,文件的uuid名

private String realName; //上传文件的真实名称

private String savepath; //记住文件的位置

private Date uptime; //文件的上传时间

private String description; //文件的描述

private String username; //上传人

ListFileServlet

package com.hbsi.servlet;

import java.io.File;

import java.io.IOException;

import java.io.PrintWriter;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

public class ListFileServlet extendsHttpServlet {

publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

Stringsavepath = this.getServletContext().getRealPath(

"/WEB-INF/upload");

Mapmap = new HashMap();

listFiles(newFile(savepath), map);

request.setAttribute("map",map);

request.getRequestDispatcher("/listfile.jsp")

.forward(request,response);

}

privatevoid listFiles(File file, Map map) {

if(file.isFile()) {

Stringuuidname = file.getName(); // uuid_a_1_3_3.txt

Stringrealname = uuidname.substring(uuidname.indexOf("_") + 1);

map.put(uuidname,realname);

}else {

File[]files = file.listFiles();

for(File f : files) {

listFiles(f,map);

}

}

}

publicvoid doPost(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

doGet(request,response);

}

}

DownloadServlet

package com.hbsi.servlet;

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.io.PrintWriter;

import java.net.URLEncoder;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

public class DownloadServlet extendsHttpServlet {

publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

Stringfilename = request.getParameter("filename");

filename= new String(filename.getBytes("iso8859-1"), "utf-8");

System.out.println(filename);

Stringsavepath = this.getFileSavePath(this.getRealName(filename));

Filef = new File(savepath + "\\" + filename);

if(!f.exists()) {

request.setAttribute("message","下载的资源不存在");

request.getRequestDispatcher("/message.jsp").forward(request,response);

}

response.setHeader("content-disposition","attachment;filename="+ URLEncoder.encode(this.getRealName(filename),"UTF-8"));

FileInputStreamin = new FileInputStream(f);

byte[]buf = new byte[1024];

intlen = 0;

OutputStreamout = response.getOutputStream();

while((len = in.read(buf)) > 0) {

out.write(buf,0, len);

}

in.close();

}

publicString getFileSavePath(String filename) {

intdir1 = filename.hashCode() & 0xf;

intdir2 = (filename.hashCode() >> 4) & 0xf;

Stringsavepath = this.getServletContext().getRealPath("/WEB-INF/upload")+"\\" + dir1 + "\\" + dir2;

returnsavepath;

}

publicString getRealName(String filename) {

StringrealName = filename.substring(filename.indexOf("_") + 1);

returnrealName;

}

publicvoid doPost(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

doGet(request,response);

}

}

以上是 Java_常瑞鹏 实现文件上传与下载 的全部内容, 来源链接: utcz.com/z/389739.html

回到顶部