servlet 上传文件
来源:互联网 发布:途风旅游 怎么样 知乎 编辑:程序博客网 时间:2024/05/22 08:06
package com.upload;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FilenameUtils;
public class Upload extends HttpServlet{
private static String exts="flv swf mp4 jpg";//上传文件格式
private static int maxByte=2000000;
private static final long serialVersionUID = -4271323303918308796L;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
DiskFileItemFactory factory=new DiskFileItemFactory();//磁盘文件夹工厂
ServletFileUpload sfu=new ServletFileUpload(factory);//使用factory 解析FileItem
String basePath=Upload.class.getResource("/").getFile();
basePath=basePath.substring(1, basePath.length());
basePath=basePath.replace("/WEB-INF/classes", ""); //基本路径
String uuid=UUID.randomUUID().toString().replace("-", "");//创建uuid 用于文件重命名
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
String data=sdf.format(new Date());//时间格式化 用于创建上传文件夹
StringBuffer sbf=new StringBuffer();
String uploadFile=basePath+"upload/"+data+"/";//上传文件夹路径
try {
File UploadFile=new File(uploadFile); //创建上传文件夹
if(!(UploadFile.isDirectory())){
UploadFile.mkdirs();
}
factory.setRepository(UploadFile);//uploadFile大小大于setSizeThreshold设置的临界值时 存放于磁盘
factory.setSizeThreshold(maxByte*1024);//设置文件存放方式的临界值
sfu.setSizeMax(maxByte*1024);
List<FileItem> list=sfu.parseRequest(request);//解析request
for(int i=0;i<list.size();i++){
FileItem item=list.get(i);
String name=item.getName();
String ext=FilenameUtils.getExtension(name);//获取上传文件后缀名
for(String s:exts.split(" ")){
if(s.equals(ext.toLowerCase())){
// ...
}
}
name=uuid;
sbf.append(name);
sbf.append(".");
sbf.append(ext);
/*
*读取文件内容
* */
InputStream ips=item.getInputStream();
BufferedInputStream bis=new BufferedInputStream(ips);
byte[] byt=new byte[bis.available()];
bis.read(byt);
/*
*写入文件内容
* */
File file=new File(uploadFile+sbf.toString());
FileOutputStream fos=new FileOutputStream(file);
fos.write(byt);
fos.flush();
fos.close();
bis.close();
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
public static String getExts() {
return exts;
}
public static void setExts(String exts) {
Upload.exts = exts;
}
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.UUID;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FilenameUtils;
public class Upload extends HttpServlet{
private static String exts="flv swf mp4 jpg";//上传文件格式
private static int maxByte=2000000;
private static final long serialVersionUID = -4271323303918308796L;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
DiskFileItemFactory factory=new DiskFileItemFactory();//磁盘文件夹工厂
ServletFileUpload sfu=new ServletFileUpload(factory);//使用factory 解析FileItem
String basePath=Upload.class.getResource("/").getFile();
basePath=basePath.substring(1, basePath.length());
basePath=basePath.replace("/WEB-INF/classes", ""); //基本路径
String uuid=UUID.randomUUID().toString().replace("-", "");//创建uuid 用于文件重命名
SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
String data=sdf.format(new Date());//时间格式化 用于创建上传文件夹
StringBuffer sbf=new StringBuffer();
String uploadFile=basePath+"upload/"+data+"/";//上传文件夹路径
try {
File UploadFile=new File(uploadFile); //创建上传文件夹
if(!(UploadFile.isDirectory())){
UploadFile.mkdirs();
}
factory.setRepository(UploadFile);//uploadFile大小大于setSizeThreshold设置的临界值时 存放于磁盘
factory.setSizeThreshold(maxByte*1024);//设置文件存放方式的临界值
sfu.setSizeMax(maxByte*1024);
List<FileItem> list=sfu.parseRequest(request);//解析request
for(int i=0;i<list.size();i++){
FileItem item=list.get(i);
String name=item.getName();
String ext=FilenameUtils.getExtension(name);//获取上传文件后缀名
for(String s:exts.split(" ")){
if(s.equals(ext.toLowerCase())){
// ...
}
}
name=uuid;
sbf.append(name);
sbf.append(".");
sbf.append(ext);
/*
*读取文件内容
* */
InputStream ips=item.getInputStream();
BufferedInputStream bis=new BufferedInputStream(ips);
byte[] byt=new byte[bis.available()];
bis.read(byt);
/*
*写入文件内容
* */
File file=new File(uploadFile+sbf.toString());
FileOutputStream fos=new FileOutputStream(file);
fos.write(byt);
fos.flush();
fos.close();
bis.close();
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}
public static String getExts() {
return exts;
}
public static void setExts(String exts) {
Upload.exts = exts;
}
}
- Flex + servlet 上传文件
- JSP+servlet上传文件
- servlet文件上传
- Servlet文件上传
- Servlet上传文件
- 文件上传servlet应用
- jsp servlet文件上传
- 文件上传Servlet实例
- Servlet文件上传代码
- java servlet 文件上传
- servlet中的文件上传
- 文件上传Servlet例子
- Servlet实现文件上传
- Servlet 上传文件(转)
- Servlet实现文件上传
- servlet之上传文件
- servlet 文件上传
- servlet 上传excel文件
- hadoop集群环境搭建笔记
- Set privilege of folder under Apache of Linux
- 代码优化的各种排序算法
- 机器学习与人工智能学习资源导引
- Linux rm命令 删除文件夹 文件 命令
- servlet 上传文件
- HDU4548:美素数
- Ubuntu下安装GCC
- 调试live555 vs2010
- 地址解析协议(ARP)
- [ACM]人见人爱A^B
- SUN官方API中文版【JDK1.6】
- struct和typedef struct彻底明白了
- Unity3D C# 委托和事件(之二)