UploadServlet.java
package com.wayne.upload;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UploadServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String filepath = request.getRealPath("/upload_file") + "\\"; // 上传之后的文件保存在这个文件夹下
String filename = "";
ServletInputStream in = request.getInputStream();
byte[] buf = new byte[4048];
int len = in.readLine(buf, 0, buf.length); // 取出第一行
String f = new String(buf, 0, len - 1); // 把第一行变成字符串,方便下面的匹配
while ((len = in.readLine(buf, 0, buf.length)) != -1) {
filename = new String(buf, 0, len);
int i = filename.lastIndexOf("\\"); // 文件名以"\"开始,这个处理方式在Linux下就不行了,如果在Linux下运行,这个地方要修改一下。
int j = filename.lastIndexOf("\""); // 文件名是以"""结尾的。
// 处理多个框时,处理没有选择文件的框
if (i == -1 || j == -1) {
continue;
}
filename = filename.substring(i + 1, j);
DataOutputStream fileStream = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream(filepath + filename)));
len = in.readLine(buf, 0, buf.length); // 在处理信息时,这行信息不要
len = in.readLine(buf, 0, buf.length); // 这行信息也不要
while ((len = in.readLine(buf, 0, buf.length)) != -1) {
String tempf = new String(buf, 0, len - 1);
if (tempf.equals(f) || tempf.equals(f + "--")) { // 如果匹配,就说明信息结束了
break; // 注意此行
} else
fileStream.write(buf, 0, len); // 写入
}
fileStream.close();
}
in.close();
request.getRequestDispatcher("/view").forward(request, response);
}
}
DownloadServlet.java
package com.wayne.upload;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DownloadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String filepath = request.getRealPath("/upload_file") + "\\";
String filename = request.getParameter("filename");
filename = new String(filename.getBytes("iso-8859-1"),("GBK"));
System.err.println(filename);
OutputStream o = response.getOutputStream();
byte b[] = new byte[4048];
File fileLoad = new File(filepath, filename);
response.setHeader("Content-disposition", "attachment;filename=" + new String(filename.getBytes("GBK"),("iso-8859-1")));
response.setContentType("application/x-tar");
long fileLength = fileLoad.length();
String length = String.valueOf(fileLength);
response.setHeader("Content_Length", length);
FileInputStream in = new FileInputStream(fileLoad);
int n = 0;
while ((n = in.read(b)) != -1) {
o.write(b, 0, n);
}
}
}
ViewServlet.java
package com.wayne.upload;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ViewServlet extends HttpServlet {
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("GBK");
PrintWriter out = response.getWriter();
out.println("<HTML>");
out.println(" <HEAD><TITLE>下载</TITLE>");
out.println(" </HEAD>");
out.println(" <BODY>");
String filepath = request.getRealPath("/upload_file") + "\\";
File file = new File(filepath);
String[] filenames = file.list();
for (int i = 0; i < filenames.length; i++)
{
out.println("<h3><a href=\"/updown/download?filename="+filenames[i]+"\">"+filenames[i]+"</a></h3>");
}
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>UploadServlet</servlet-name>
<servlet-class>com.wayne.upload.UploadServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>DownloadServlet</servlet-name>
<servlet-class>com.wayne.upload.DownloadServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ViewServlet</servlet-name>
<servlet-class>com.wayne.upload.ViewServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UploadServlet</servlet-name>
<url-pattern>/upload</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DownloadServlet</servlet-name>
<url-pattern>/download</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ViewServlet</servlet-name>
<url-pattern>/view</url-pattern>
</servlet-mapping>
</web-app>
upload.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>上传文件</title>
</head>
<body>
<form action="/updown/upload" method="post" enctype="multipart/form-data">
请选择上传文件:
<input type="file" name="file" size="30" />
<input type="submit" value="上传" />
</form>
</body>
</html>
分享到:
相关推荐
java 写的文件上传下载的例子,可以做简单图片文件服务器
servlet实现上传文件和下载文件的方法,在浏览器中输入http://ip:port/servletName?path这种方式将客户端文件上传至服务器端,简单的例子,servletName参照web.xml path参照servlet中写的参数
利用Ajax和Servlet实现文件上传,用来commons-fileupload和commons-io两个包。这两个包也在里边。东西做的很简单,但重点是能对这个方法有所了解就行了,有人想做的更炫的可以自行修改。希望能对大家有所帮助。如果...
基于servlet2.5 + JDk1.6实现的文件上传和下载功能的简单示例代码。
使用servlet实现简易文件上传,带有进度条
JSP+servlet文件上传简单案例 JSP+servlet文件上传简单案例
有感于各种方法的上传和下载,比较麻烦,我使用简单的输入输出流,读取文件信息,实现把指定文件上传到服务器以及在页面使用脚本window.open()的方式,实现从服务器端的下载。供大家参考!不足之处,欢迎指出,不胜...
此资源包括了采用SmartUpload 组件从jsp上传到指定文件,下载到文件,上传到数据库,以及从数据库下载的代码,代码简单,清晰。有大量的注释,初学者可以轻松看懂并理解其原理。
实现简单的文件上传功能。 在工程中加入io和upload组件的方法: Windows-preferences-Java-buildpath-userlibraries 右击工程名:buildpath-config buildpath-libraries-addlibraries-userliraries-next,加入包即可...
做了一个使用SmartUpload+java+servlet+jsp实现上传下载功能的小程序,可以获取前台file以外的其他参数,并获取上传文件的属性,可以动态修改上传的文件名,代码简单易懂,只要是学过java都看得懂
简单的jquery上传案例,内附源码,jsp+servlet实现,适合初学者。
实现技术:Servlet+MVC(模式)+Filter(过滤器)+html 主要功能:学生信息的增删查改,文件(图片)上传 难度:比较简单
用Servlet实现的echarts展示两种不同形式图表的小demo,使用的开发工具是eclipse,数据库是mysql。文件中包含项目源码,对应的数据库,以及项目运行后实现的图表截图(含url)。项目本人亲测,可完美展示图表,若有...
通过JSP录入本地图片,MySQL建库,图片以blob值上传数据库,JavaBean封装对象。我上传的是整个项目的代码,并附加使用教程,简单易用。
即可使用的servlet+jsp的文件上传。采用commons-fileupload.jar组件,简单实用!
现在文件的上传,特别是大文件上传,都需要进度条,让客户知道上传进度。 本文简单记录下如何弄进度条,以及一些上传信息,比如文件的大小,上传速度,预计剩余时间等一些相关...接收文件上传的servlet UploadFile
主要介绍了jsp+servlet简单实现上传文件(保存目录改进),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
主要介绍了简单操作实现Java jsp servlet文件上传过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
适用于简单的javaweb期末课程设计。包含功能如下所示。 1)前端功能 图书的分类展示; 图书详情 图书搜索 订单详情(购物车) 登录与注册 注意:注册用户可以购买商品,非注册用户仅可以浏览、查询商品 2)后端功能 ...
使用jquery+Jcrop+servlet,简单实现图片上传默认裁剪,选择裁剪区域不同尺寸进行预览,并进行裁剪图片保存,获取裁剪后的图片显示。