这里的案例使用了两种文件上传的组件、分别介绍

1、使用JSPSmartUpload完成上传

 package test_servlet_package;

 import java.io.File;
import java.io.IOException;
import java.util.Calendar;
import java.util.Random;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jspsmart.upload.SmartUpload; public class test_servlet_SmartUpload extends HttpServlet { String tempPath = "D:\\test";
String filePath = "D:\\filePath";
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setCharacterEncoding("GBK");
SmartUpload mySmartUpload = new SmartUpload();
// 初始化
mySmartUpload.initialize(getServletConfig(), request, response);
long file_size_max = 4000000;
String ext = "";
try {
mySmartUpload.setAllowedFilesList("jpg,gif,png");
mySmartUpload.upload();// 上载文件
} catch (Exception e) {
response.getWriter().write("<script> alert('只允许上传.jpg和.gif类型图片文件');</script>");
}
try {
com.jspsmart.upload.File myFile = mySmartUpload.getFiles().getFile(0);
if (!myFile.isMissing()) {
ext = myFile.getFileExt(); // 取得后缀名
int file_size = myFile.getSize(); // 取得文件的大小
String saveurl = "";
if (file_size < file_size_max) {
// 更改文件名,取得当前上传时间的毫秒数值
Calendar calendar = Calendar.getInstance();
String filename = String.valueOf(calendar.getTimeInMillis());
Random r = new Random();
String ram = String.valueOf(r.nextInt(1241241241));
filename = filename + ram;
filename = filename.substring(0, (filename.length() - ext.length() - 1));
//saveurl = this.getServletContext().getRealPath("/") + "/uploadFile/" + filename + "." + ext;
//System.out.println(saveurl);
File uploadFile2 = new File(filePath);
if(!uploadFile2.exists()){
uploadFile2.mkdirs();
}
myFile.saveAs(filePath+"/"+filename+"." + ext);
}
}
String name = mySmartUpload.getRequest().getParameter("name");
request.setAttribute("name", "name");
request.getSession().setAttribute("name", "name");
request.getSession().getId();
System.out.println(name);
} catch (Exception e) {
e.printStackTrace();
}
request.getRequestDispatcher("/uploadsuccess.jsp").forward(request, response);
}
}

2、使用commons-fileupload完成文件上传

 package test_servlet_package;

 import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload; public class test_servlet extends HttpServlet { String tempPath = "D:\\test";
String filePath = "D:\\filePath";
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
res.setContentType("text/plain;charset=gbk");
PrintWriter pw = res.getWriter();
try {
DiskFileItemFactory diskFactory = new DiskFileItemFactory();
// threshold 极限、临界值,即硬盘缓存 1M
diskFactory.setSizeThreshold(4 * 1024);
// repository 贮藏室,即临时文件目录
diskFactory.setRepository(new File(tempPath));
ServletFileUpload upload = new ServletFileUpload(diskFactory);
// 设置允许上传的最大文件大小 4M
upload.setSizeMax(4 * 1024 * 1024);
// 解析HTTP请求消息头
List<FileItem> fileItems = upload.parseRequest(req);
Iterator<FileItem> iter = fileItems.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
System.out.println("处理表单内容 ...");
processFormField(item, pw);
} else {
System.out.println("处理上传的文件 ...");
processUploadFile(item, pw);
}
}
pw.close();
} catch (Exception e) {
System.out.println("使用 fileupload 包时发生异常 ...");
e.printStackTrace();
}
} // 处理表单内容
private void processFormField(FileItem item, PrintWriter pw) throws Exception {
String name = item.getFieldName();
String value = item.getString();
pw.println(name + " : " + value + "\r\n");
} // 处理上传的文件
private void processUploadFile(FileItem item, PrintWriter pw) throws Exception {
// 此时的文件名包含了完整的路径,得注意加工一下
String filename = item.getName();
System.out.println("完整的文件名:" + filename);
int index = filename.lastIndexOf("\\");
filename = filename.substring(index + 1, filename.length());
long fileSize = item.getSize();
if ("".equals(filename) && fileSize == 0) {
System.out.println("文件名为空 ...");
return;
}
File uploadFile = new File(filePath + "/" + filename);
File uploadFile2 = new File(filePath);
if(!uploadFile2.exists()){
uploadFile2.mkdirs();
}
item.write(uploadFile);
pw.println(filename + " 文件保存完毕 ...");
pw.println("文件大小为 :" + fileSize + "\r\n");
}
}

3、依赖的jar:

 <classpath>
<classpathentry kind="lib" path="base/WEB-INF/lib/commons-fileupload-1.2.2.jar"/>
<classpathentry kind="lib" path="base/WEB-INF/lib/commons-io-2.0.1.jar"/>
<classpathentry kind="lib" path="base/WEB-INF/lib/jsmartcom_zh_CN.jar"/>
<classpathentry kind="lib" path="base/WEB-INF/lib/mysql-connector-java-5.1.21-bin.jar"/>
<classpathentry kind="lib" path="base/WEB-INF/lib/taglibs-standard-compat-1.2.1.jar"/>
<classpathentry kind="lib" path="base/WEB-INF/lib/taglibs-standard-impl-1.2.1.jar"/>
<classpathentry kind="lib" path="base/WEB-INF/lib/taglibs-standard-jstlel-1.2.1.jar"/>
<classpathentry kind="lib" path="base/WEB-INF/lib/taglibs-standard-spec-1.2.1.jar"/>
<classpathentry kind="output" path="base/WEB-INF/classes"/>
</classpath>

java servlet中上传文件的简单实现(基于第三方jar)的更多相关文章

  1. java servlet上传文件并把文件内容显示在网页中

    servlet3.0(JDK1.6)自带的API即可实现本地文件的上传,Servlet3.0新增了Part接口,HttpServletRequest的getPart()方法取得Part实现对象.下面我 ...

  2. JAVA servlet 上传文件(commons-fileupload, commons-io)

    <1>获取二进制文件流并输出 InputStream inputStream = request.getInputStream(); BufferedReader reader = new ...

  3. JAVA SERVLET上传文件的样码

    import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...

  4. spring mvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  5. Servlet上传文件

    Servlet上传文件 1.准备工作 (1)利用FileUpload组件上传文件,须要到apache上下载commons-fileupload-1.3.1.jar 下载地址:http://common ...

  6. SpringMvc(注解)上传文件的简单例子

    spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方1.form的enctype=”multipart/form-data” 这个是上传文件必须的2.applicationConte ...

  7. HDFS基本命令行操作及上传文件的简单API

    一.HDFS基本命令行操作: 1.HDFS集群修改SecondaryNameNode位置到hd09-2 (1)修改hdfs-site.xml <configuration> //配置元数据 ...

  8. 原生Servlet 上传文件

    依赖jar <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons ...

  9. 使用Servlet上传文件

    使用浏览器向服务器上传文件其本质是打开了一个长连接并通过TCP方式传输数据.而需要的动作是客户端在表单中使用file域,并指定该file域的name值,然后在form中设定enctype的值为mult ...

随机推荐

  1. 【Hadoop】Flink VS Spark?Drill VS Presto?

    参考资料: drill 官网:http://drill.apache.org/ drill安装使用:https://segmentfault.com/a/1190000002652348 drill简 ...

  2. [转载]Linux 卸载JDK并安装新版本JDK (rpm,tar)

    FROM:http://josh-persistence.iteye.com/blog/1908549 一.查看Jdk的安装路径: whereis javawhich java (java执行路径)e ...

  3. Shell 进度条效果的一个实现

    #!/bin/bash processBar() { now=$ all=$ percent=`awk BEGIN'{printf "%f", ('$now'/'$all')}'` ...

  4. pomodoro源码

    有网友问我要pomodoro源码.事实上这个程序非常easy,仅仅是定时器,定时弹出置顶窗体.用c++builder6.0写.放一个TPopupMenu 右键菜单,一个TTrayIcon 一个托盘图标 ...

  5. TELNET模拟HTTP请求

    开启nginx服务,查看服务器地址(192.168.11.119) 使用telnet命令连接服务器的80端口 http协议报文格式 1.request 2.response 输入请求行: GET / ...

  6. 51单片机 | 实现SMG12864液晶显示器操作

    ———————————————————————————————————————————— SMG12864液晶显示器 128*64个点位,可以显示图形或8*4个汉字 - - - - - - - - - ...

  7. [译] ContentEditable 那些好的、坏的和坑

    译者注 我的上一篇译文 “[译] 通过 contentEditable 属性创建一个所见即所得的编辑器” 的原文 “Create a WYSIWYG Editor With the contentEd ...

  8. DevOps开源工具的三种分类整理

    原文地址:http://www.360doc.com/content/16/0322/07/31263000_544210096.shtml 随着开发运维一体化的DevOps运动在国内外蓬勃发展,De ...

  9. 在Excel2003中给定区域填充随机数?

    1.选中一个单元格,输入“=RAND()*40+60”,点CTRL+ENTER键,即可完成公式填充. 2.鼠标悬停单元格边框右下角,出现“+”符号,左键拉动实现格式复制,从而填充整个区域随机数. ★题 ...

  10. mysql负载飙高原因分析

    某些进程/服务消耗更多CPU资源(服务响应更多请求或存在某些应用瓶颈):发生比较严重的swap(可用物理内存不足):发生比较严重的中断(因为SSD或网络的原因发生中断):磁盘I/O比较慢(会导致CPU ...