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

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. ant create-path 报不允许匹配[xX][mM][1L]错误

    将build.xml配置文件的第一行 <?xml version="1.0" encoding="UTF-8"?> 空格去掉

  2. WEB接口测试之Jmeter接口测试自动化 (四)(持续构建)

    转载http://www.cnblogs.com/chengtch/p/6145867.html  Jmeter是压力测试.接口测试工具,Ant是基于Java的构建工具,具有跨平台的作用,jenkin ...

  3. npm -D -S -g -i 以及安装技巧

    繁杂:npm install webpack 简洁:npm i webpack 重复性操作: npm i webpack npm i babel-core .... 简洁性操作: npm i webp ...

  4. 借助backtrace和demangle实现异常类Exception

    C++的异常类是没有栈痕迹的,如果需要获取栈痕迹,需要使用以下函数: #include <execinfo.h> int backtrace(void **buffer, int size ...

  5. js控制div内的滚动条的位置

    通过div的scrollTop变动控制垂直滚动条位置. 通过div的scrollLeft变动控制水平滚动条位置. 示例: <body> //d1是外层div,带滚动条 <div id ...

  6. DNS主从服务器

    一.目的: 我们知道,DNS服务器在网络服务中可能出现故障当机等状况,会导致DNS服务瘫痪,显然在实际的网络应用中我们不希望出现这种状况,所有我们就要配置从 服务器来在主DNS服务器出现故障时代替他来 ...

  7. 【Excle数据透视表】如何重复显示行字段的项目标签

    前提:该数据透视表以表格形式显示 解决办法: 通过报表布局设置"重复所有项目标签" 修改前样式 步骤 单击数据透视表中任意单元格→设计→报表布局→重复所有项目标签 修改后样式

  8. Ajax系列之中的一个:ajax旧貌换新颜

    什么是ajax? 什么是Ajax? Ajax就是Asynchronous +JavaScript+XML.中文翻译为:异步的javascript与XML,它是利用javascript语言和xml数据实 ...

  9. sql server 执行大.sql文件

    打开cmd执行:osql -S 127.0.0.1 -U sa -P sa -i d:\test.sql 执行后会提示输入密码.

  10. CDN与缓存的归纳理解

    缓存是什么 缓存是一个到处都存在的用空间换时间的例子.通过使用多余的空间,我们能够获取更快的速度. 我们通常意义上说的缓存主要包含两部分.第一个是用户浏览器端的缓存,第二个是服务器端为了提高访问速度而 ...