<1>获取二进制文件流并输出

     InputStream inputStream = request.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String s;
while ((s = reader.readLine()) != null) {
System.out.println(s);
}

<2>借用服务器提供的架包(commons-fileupload, commons-io)

package servlet_file_upload;

import java.io.File;
import java.io.IOException;
import java.util.List; import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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; @WebServlet("/FileUploadServlet")
public class FileUploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L; public FileUploadServlet() {
super();
} protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
} protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置跨域访问
response.addHeader("Access-Control-Allow-Origin", "*");
// 设置请求和返回编码为 UTF-8, 如非必要,不要设置,不然会影响文件扩展名的获取
//response.setCharacterEncoding("UTF-8");
  //request.setCharacterEncoding("UTF-8");
// 获取项目根目录绝对路径
String path = getServletContext().getRealPath("");
// 设置存放返回路径的变量
StringBuilder returnPath = new StringBuilder(200); try {
// 实例化本地磁盘工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
// 设置文件上传启用的缓存的值,每 2M 写入一次临时文件
factory.setSizeThreshold(2 * 1024 * 1024);
// 设置缓存文件的临时存放目录
factory.setRepository(new File(path + "Upload"));
// 实例化文件上传类
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置全部文件上传的最大值
//upload.setSizeMax(Integer.valueOf(100) * 1024 * 1024);
// 获取前端上传的文件列表
List<FileItem> items = upload.parseRequest(request);
// 循环所有上传的字段或文字
for (FileItem item : items) {
if (item.isFormField()) {
// 获取字段名
String name = item.getFieldName();
// 获取字段值 括号内的参数不可少否则乱码
String value = item.getString("UTF-8");
// 打印不是文件的字段
System.out.println(name + ".." + value);
} else {
// 获取文件名
String name = item.getName();
// 确定文件存放的相对路径
String filePath = "Upload/" + System.currentTimeMillis() + "." + name.split("\\.")[1];
// 将文件写入指定的路径
item.write(new File(path + filePath));
// 删除缓存文件, 如果没有设置, 大部分时候临时文件也会被删除
item.delete();
// 将相对路径赋值给返回值
returnPath.append(filePath);
// 路径之间用逗号隔开
returnPath.append(",");
}
}
response.getWriter().write(returnPath.substring(0, returnPath.length()- 1));
} catch (Exception e) {
response.getWriter().write("上传失败");
}
}
}

注:  前端代码请参考   http://www.cnblogs.com/lovling/p/6685634.html

 

 

 

  

JAVA servlet 上传文件(commons-fileupload, commons-io)的更多相关文章

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

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

  2. JAVA SERVLET上传文件的样码

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

  3. Servlet上传文件

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

  4. 原生Servlet 上传文件

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

  5. 使用Servlet上传文件

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

  6. Java ftp上传文件方法效率对比

    Java ftp上传文件方法效率对比 一.功能简介: txt文件采用ftp方式从windows传输到Linux系统: 二.ftp实现方法 (1)方法一:采用二进制流传输,设置缓冲区,速度快,50M的t ...

  7. java 后台上传文件

    java 后台上传文件 public static String uploadFile(File file, String RequestURL) throws IOException { Strin ...

  8. Java+Selenium 上传文件,点击选择“浏览文件”按钮,报错invalid argument

    Java+Selenium 上传文件,点击选择"浏览文件"按钮,报错invalid argument 解决代码: Actions action=new Actions(driver ...

  9. servlet上传文件报错(三)

    1.具体报错如下 null null Exception in thread "http-apr-8686-exec-5" java.lang.OutOfMemoryError: ...

随机推荐

  1. gcd模板(欧几里得与扩展欧几里得、拓展欧几里得求逆元)

    gcd(欧几里得算法辗转相除法): gcd ( a , b )= d : 即 d = gcd ( a , b ) = gcd ( b , a mod b ):以此式进行递归即可. 之前一直愚蠢地以为辗 ...

  2. FabricExpress.net supply high quality quilting fabric

    FabricExpress is a company specializing in high quality custom t-shirts,custom fabric,senior handmad ...

  3. 2、let 和 const 命令

    let 命令 块级作用域 const 命令 顶层对象的属性 global 对象 let 命令 基本用法 ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所 ...

  4. Android中logcat和日志打印

     一.logcat对日志过滤 1.# logcat --help # logcat --help Usage: logcat [options] [filterspecs] options inclu ...

  5. 求幂pow()

    pow(x, n)  求x的n次方. 最简单的方法便是计算n个x相乘 public static double pow(double x, int n) { if (n == 0) return 1; ...

  6. JMeter--使用URL回写来处理用户会话

    如果测试的Web应用系统使用URL回写而非Cookie来保存会话信息,那么测试人员需要做一些额外的工作来测试web站点 为了正确回应URL回写,JMeter需要解析从服务器收到的HTML,并得到唯一的 ...

  7. python 典型文件结构

    #/usr/bin/env/ python #(1) 起始行 "this is a test module" #(2) 模块文档(文档字符串) import sys import ...

  8. framework4.0 IIS7下urlrewriter设置问题

    framework4.0 IIS7下urlrewriter设置问题 http://www.cnblogs.com/litian/articles/alex.html IIS开启伪静态后html静态页面 ...

  9. bzoj4232: [Neerc2011 Northern]Kids Like Cakes

    Description 给定一个n个点的严格凸多边形(各个内角<180°),现在要切出两个非退化三角形(三点不共线),要求两个三角形顶点必须是凸多边形的顶点,且三角形不可相交(但是点或边可以重合 ...

  10. 杂项:CDN

    ylbtech-杂项:CDN CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快 ...