file js new 传到后台_fileinput上传 全代码包含后台

/*** fileInput*/

packagecom.servlet;importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.PrintWriter;importjava.sql.DriverManager;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Date;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.Properties;importjava.util.UUID;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apache.commons.fileupload.FileItem;importorg.apache.commons.fileupload.disk.DiskFileItemFactory;importorg.apache.commons.fileupload.servlet.ServletFileUpload;importorg.apache.commons.io.FileUtils;importcom.mysql.jdbc.Connection;importcom.mysql.jdbc.PreparedStatement;importcom.mysql.jdbc.ResultSet;importnet.sf.json.JSONArray;/***

*@author典型的码农

*@version$Id: FileUploadServlet.java, v 0.1 2017年7月20日 上午10:50:06*/

public class FileUploadServlet extendsHttpServlet {private static final long serialVersionUID = -1654876187842392874L;public FileUploadServlet() { super(); }public void destroy() { super.destroy(); }public void doGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException { }private Properties pro= newProperties();/*** 初始化时 获取核心配置文件

**/

public void init() throwsServletException {

pro=getUpConfig();

}/*** post 请求

**/

public voiddoPost(HttpServletRequest request, HttpServletResponse response) {

response.setContentType("application/json");

response.setCharacterEncoding("UTF-8");if("upload".equals( request.getParameter("cmd"))){

upload(request,response);

}else if("delete".equals( request.getParameter("cmd"))){

delete(request,response);

}else if("initFileInput".equals(request.getParameter("cmd"))){

queryFileByPid(request,response);

}

}/*** 上传

* 注:fileinput 上传每次只上传一个文件 批量上传时会多次请求

**/

private voidupload(HttpServletRequest request, HttpServletResponse response){try{//文件父ID(分类ID,业务ID)

String bizid = request.getParameter("bizid");//配置上传参数

DiskFileItemFactory factory = newDiskFileItemFactory();//设置内存临界值 - 超过后将产生临时文件并存储于临时目录中

factory.setSizeThreshold(Integer.parseInt(pro.getProperty("memory.threshold")));//设置临时存储目录

factory.setRepository(new File(System.getProperty("java.io.tmpdir")));

ServletFileUpload upload= newServletFileUpload(factory);//设置最大文件上传值

upload.setFileSizeMax(Integer.parseInt(pro.getProperty("file.maxSize")));//中文处理

upload.setHeaderEncoding("UTF-8");

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");//构建文件保存目录

String uploadPath = pro.getProperty("file.uploadDir")+"/"+ sdf.format(newDate());//如果目录不存在则创建

File uploadDir = newFile(uploadPath);if (!uploadDir.exists()) {

uploadDir.mkdir();

}//解析请求的内容提取文件数据

@SuppressWarnings("unchecked")

List formItems =upload.parseRequest(request);

String id= "";if (formItems != null && formItems.size() > 0) {//迭代表单数据

for(FileItem item : formItems) {//处理不在表单中的字段

if (!item.isFormField()) {

String fileName= newFile(item.getName()).getName();//上传

FileUtils.copyInputStreamToFile(item.getInputStream(),newFile(uploadPath,fileName));//上传后保存

id = saveFileInfo(uploadPath+"/"+fileName,fileName,item.getSize()+"",bizid);

}

}

}

ajax(response,id);

}catch(Exception e) {

e.printStackTrace();

}

}/*** 删除文件数据

* **/

private voiddelete(HttpServletRequest request, HttpServletResponse response){try{

String id= request.getParameter("id");//删除文件

deleteFile(id);

String sql= "delete from "+pro.getProperty("table")+" where "+pro.getProperty("field.id")+"='"+id+"'";

Connection conn=getConn();

PreparedStatement pstmt;

pstmt=(PreparedStatement) conn.prepareStatement(sql);

pstmt.executeUpdate();

pstmt.close();

conn.close();

}catch(Exception e) {

e.printStackTrace();

}

}/*** 删除文件

**/

private void deleteFile(String id) throwsException {

String sql= "select * from "+pro.getProperty("table")+" where "+pro.getProperty("field.id")+"='"+id+"'";

Connection conn=getConn();

PreparedStatement pstmt;

pstmt=(PreparedStatement) conn.prepareStatement(sql);//注意:此resulSet 来之mysql连接驱动包 跟换驱动时需注意

ResultSet rs =(ResultSet) pstmt.executeQuery();while(rs.next()){

String filePath= rs.getString("F_PATH");

File file= newFile(filePath);

file.delete();

}

rs.close();

pstmt.close();

conn.close();

}/*** 上传后保存信息入库

* 注:根据实际入参需求 重新此方法

*@paramfilePath ,fileName ,fileSize

*@throwsException

*@returnuuid

**/

private String saveFileInfo(String filePath,String fileName,String fileSize,String bizid) throwsException{

UUID uuid=UUID.randomUUID();

String sql= "insert into "+pro.getProperty("table")+"("+pro.getProperty("field.id")+","+pro.getProperty("field.path")+","+pro.getProperty("field.fileName")+","+pro.getProperty("field.size")+","+pro.getProperty("field.bizid")+") values('"+uuid+"','"+filePath+"','"+fileName+"','"+fileSize+"','"+bizid+"')";

Connection conn=getConn();

PreparedStatement pstmt;

pstmt=(PreparedStatement) conn.prepareStatement(sql);

pstmt.executeUpdate();

pstmt.close();

conn.close();returnuuid.toString();

}/*** 根据父ID查询文件

**/

private voidqueryFileByPid(HttpServletRequest request, HttpServletResponse response){try{

String bizid= request.getParameter("bizid");

String sql= "select * from "+pro.getProperty("table")+" where "+pro.getProperty("field.bizid")+"='"+bizid+"'";

Connection conn=getConn();

PreparedStatement pstmt;

pstmt=(PreparedStatement) conn.prepareStatement(sql);//注意:此resulSet 来之mysql连接驱动包 跟换驱动时需注意

ResultSet rs =(ResultSet) pstmt.executeQuery();

List> resultList = new ArrayList>();while(rs.next()){

Map map = new HashMap();

map.put("id", rs.getString(pro.getProperty("field.id")));

map.put("path", rs.getString(pro.getProperty("field.path")));

map.put("name", rs.getString(pro.getProperty("field.fileName")));

map.put("size", rs.getString(pro.getProperty("field.size")));

resultList.add(map);

}

rs.close();

pstmt.close();

conn.close();

ajax(response,resultList);

}catch(Exception e) {

e.printStackTrace();

}

}/*** 获取上传附件配置:上传地址、文件大小、数据库配置

*@returnProperties

*

**/

privateProperties getUpConfig() {

Properties prop= newProperties();try{//返回Servlet上下文路径。

String path = this.getServletContext().getRealPath("/");//在Servlet上下文路径的最后包含一个"."号,所以这里将它去除。

path = path.substring(0, path.length() - 1);//我将路径放置在项目下的WEB-INF目录下。

path = path + "\\WEB-INF\\";//这里就是我的properties文件。

path = path + "fileUploadConfig.properties";

FileInputStream input= newFileInputStream(path);

prop.load(input);

}catch(Exception e) {

e.printStackTrace();

}returnprop;

}/**获取jdbc连接*/

private Connection getConn() throwsException {

String driver= pro.getProperty("db.driver");

String url= pro.getProperty("db.url");

String username= pro.getProperty("db.username");

String password= pro.getProperty("db.password");

Connection conn= null;

Class.forName(driver);//classLoader,加载对应驱动

conn =(Connection) DriverManager.getConnection(url, username, password);returnconn;

}/**ajax 返回 注意上传必须返回一个json*/

public voidajax(HttpServletResponse response,String id){try{

response.setContentType("application/json");

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "no-cache");

response.setCharacterEncoding("UTF-8");

PrintWriter out= null;

out=response.getWriter();

Map map = new HashMap();

map.put("id", id);

JSONArray json=JSONArray.fromObject(map);

out.print(json);

out.flush();

out.close();

}catch(IOException e) {

e.printStackTrace();

}

}/**ajax 返回 注意上传必须返回一个json*/

public void ajax(HttpServletResponse response,List>resultList){try{

response.setContentType("application/json");

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "no-cache");

response.setCharacterEncoding("UTF-8");

PrintWriter out= null;

out=response.getWriter();

JSONArray json=JSONArray.fromObject(resultList);

out.print(json);

out.flush();

out.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值