JAVA servlet 上传文件(commons-fileupload, commons-io)
<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)的更多相关文章
- java servlet上传文件并把文件内容显示在网页中
servlet3.0(JDK1.6)自带的API即可实现本地文件的上传,Servlet3.0新增了Part接口,HttpServletRequest的getPart()方法取得Part实现对象.下面我 ...
- JAVA SERVLET上传文件的样码
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...
- Servlet上传文件
Servlet上传文件 1.准备工作 (1)利用FileUpload组件上传文件,须要到apache上下载commons-fileupload-1.3.1.jar 下载地址:http://common ...
- 原生Servlet 上传文件
依赖jar <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons ...
- 使用Servlet上传文件
使用浏览器向服务器上传文件其本质是打开了一个长连接并通过TCP方式传输数据.而需要的动作是客户端在表单中使用file域,并指定该file域的name值,然后在form中设定enctype的值为mult ...
- Java ftp上传文件方法效率对比
Java ftp上传文件方法效率对比 一.功能简介: txt文件采用ftp方式从windows传输到Linux系统: 二.ftp实现方法 (1)方法一:采用二进制流传输,设置缓冲区,速度快,50M的t ...
- java 后台上传文件
java 后台上传文件 public static String uploadFile(File file, String RequestURL) throws IOException { Strin ...
- Java+Selenium 上传文件,点击选择“浏览文件”按钮,报错invalid argument
Java+Selenium 上传文件,点击选择"浏览文件"按钮,报错invalid argument 解决代码: Actions action=new Actions(driver ...
- servlet上传文件报错(三)
1.具体报错如下 null null Exception in thread "http-apr-8686-exec-5" java.lang.OutOfMemoryError: ...
随机推荐
- Linux regulator系统
1. 概念:Regulator : 电源芯片, 比如电压转换芯片Consumer : 消费者,使用电源的部件, Regulator是给Consumer供电的machine : 单板,上面焊接有Regu ...
- encode decode enumerate
format的用法 print(format('aa','>20')) print(format('aa','<20')) print(format('aa','^20')) 打印结果如下 ...
- .NET基金会成立
作者 Jonathan Allen ,译者 臧秀涛 发布于 2014年4月8日 随着.NET基金会的成立,微软在成为主要的开源参与者的道路上又前进了一步.该基金会的宗旨是“成为越来越多的开源.NET项 ...
- 一、PowerDesigner概述(系统分析与建模)
PowerDesigner概述 PowerDesigner是Sybase公司推出的一个集成了企业架构,UML(统一建模语言)和数据库的CASE(计算机辅助软件工程)工具.它不仅可以用于系统设计和开发 ...
- priority_queue
priority_queue<int> p;//最大值优先,是大顶堆一种简写方式 priority_queue<int,vector<int>,greater<in ...
- 调试 FastAdmin 出现 Failed to parse SourceMap
看到群里有人说在调试 FastAdmin出现 SourceMap 出错. 报错信息为: Failed to parse SourceMap 来自 Karson 说明: 这个文件是用于匹配原有less中 ...
- Tcp 编程 的时代 已经到来
这是 一个 网友 在 Github 上的 项目 SmartRoute : https://github.com/IKende/SmartRoute ZooKeeper 和 Consul 的 “投票 ...
- vue-cli 知识点
vue init webpack [project_name] 构建的项目,新增功能需要做的工作: table th:first-of-type { width: 100px; } table th: ...
- 【python】网络编程-套接字常用函数
- Django 配置总结
配置 app urls 项目下的urls.py from django.conf.urls import url,include urlpatterns = [ url(r'^BookApp/', i ...