今天闲暇无所事事,很长时间没有写博客了,突然想起很多开发web项目中,对于文件上传习惯于使用Apache下commons-fileupload来实现上传。本人实现了一个servlet文件的上传,由于本人水平有限,希望各位大虾拍砖。废话不多讲,直接上主菜………
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
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{
/**
*
*/
private static final long serialVersionUID = 1L;
private static final String saveDir = new String("e:");
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
InputStream is = null;
FileOutputStream os = null;
try {
is = req.getInputStream();
String savePath = saveDir + File.separator + getFileName(
new byte[1024], req.getInputStream(), "UTF-8")
.replaceAll("\"", "");
File destFile = new File(savePath);
os = new FileOutputStream(destFile);
byte[] tempByte = new byte[1024];
int byteread = 0;
while ((byteread = is.read(tempByte)) != -1) {
os.write(tempByte, 0, byteread);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != is) {
is.close();
}
if (null != os) {
os.close();
}
}
}
/**
* 获得文件名称
* @param buffer
* @param servletinputstream
* @param charset
* @return
*/
private String getFileName(byte[] buffer, ServletInputStream servletinputstream, String charset) {
String line = null;
while ( (line = readLine(servletinputstream, buffer, charset)) != null) {
if (line.startsWith("Content-Disposition: form-data;")) {
int i = line.indexOf("filename=");
if (i >= 0) {
String fName = subFullName(line);
if (fName.equals("")) {
continue;
}
return fName;
}
} else {
continue;
}
}
return null;
}
/**
* 读取指定byte[]数组长度的String
* @param is
* @param buffer
* @param charset
* @return
*/
private String readLine(ServletInputStream is, byte[] buffer, String charset) {
int len = 0;
try {
len = is.readLine(buffer, 0, buffer.length);
if (-1 == len) {
return null;
}
if (null != charset) {
return new String(buffer, 0, buffer.length);
} else {
return new String(buffer, 0, buffer.length, charset);
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 截取文件名称
* @param line
* @return
*/
private String subFullName(String line) {
if (line == null) {
return "";
}
int i = line.indexOf("filename=");
line = line.substring(i + 9).trim();
i = line.lastIndexOf("");
if (i < 0 || i >= line.length() - 1) {
i = line.lastIndexOf("/");
if (line.equals("")) {
return "";
}
if (i < 0 || i >= line.length() - 1) {
return line;
}
}
return line.substring(i + 1, line.length() - 1);
}
}
分享到:
相关推荐
开发文件上传表单页面 在实现文件上传时,首先需要设置文件上传表单,这个表单的提交方式必须为POST。另外,还需要增加上传的属性enctype= “multipart/form-data”,该属性说明浏览器可以提供文件上传功能。 2.编写...
本源码项目是基于Java的FastDFS大文件上传与断点续传设计,包含36个文件,主要使用Java、JavaScript和CSS编程语言。该项目旨在实现h5与fastdfs之间的高性能断点续传、秒传、大文件上传以及使用redis文件锁。系统提供...
文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件上传功能。
该组件可以很好的支持IE和FF,同时允许客户端上传最大1.5G的文件,更多的自定义参数允许使用人员定制满足自身的文件上传应用。 该控件最大支持1.5G的文件上传 速度快,100MB文件大概在20s内上传完。 开发包轻便,...
ctjdfs是由java语言开发的一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
Java Web应用开发 54 课堂案例-应用jspSmartUpload组件实现文件上传.docx 学习资料 复习资料 教学资源
文件上传与下载 文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的 ,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件 为例,为jsp应用添加文件上传功能。
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
钉钉文件钉盘下载java依赖包
web应用开发中上传文件的代码
本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。. 本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...
主要内容包括web应用程序运行原理、主流集成开发工具(eclipse/myeclipse)和运行环境(tomcat)的配置和使用、servlet、jsp、jdbc、jsp表达式语言(el)、servlet监听器和过滤器、定制标记库、jstl、mvc模式、dao...
用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...
Java EE开发期末课程设计图书管理系统源码+开发文档+数据库。系统用户分为:借阅者(包括学生、教师及其他用户)、管理员Java EE开发期末课程设计图书管理系统源码+开发文档+数据库。系统用户分为:借阅者(包括学生...
完整的功能应用,包括:后台权限、人员机构、参数代码、角色权限、上传文件、日志管理等内容。 您可以直接在其上面开发业务模块,具体下载和演示可访问:www.walkersoft.net。 开发文档整理中,很快会更新到网站中。...
用JAVA开发的一个小型的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,...
由于上传大小限制50M,因此分享的是我的百度网盘链接,下载后文本文件里有链接,包括Java Web整合开发王者归来整本书326.5M 的PDF文档以及54.7M的光盘源代码 本书简介: 资深Java程序员耗时一年时间写作,十年开发...
最新微信企业号开发实例java版jssdk,access_token,ticket,oauth媒体文件的上传下载,通讯录管理,菜单管理