com.css.common.upload.servlet关于文件上传的代码

简介: package com.css.common.upload.servlet; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.servlet.Ser

package com.css.common.upload.servlet;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import com.css.common.image.ImageUtil;
import com.css.common.util.FileUploadUtil;

@SuppressWarnings("serial")
public class FileUploadServlet extends HttpServlet {

 @Override
 public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
  this.doPost(request, response);
 }
 
 @Override
 @SuppressWarnings("unchecked")
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
       
        DiskFileItemFactory fac = new DiskFileItemFactory();
       
        ServletFileUpload upload = new ServletFileUpload(fac);
       
        upload.setHeaderEncoding("utf-8");
       
        List fileList = null;
       
        try {
            fileList = upload.parseRequest(request);
        } catch (FileUploadException ex) {
         response.getWriter().print("ERROR:" + ex.getMessage());
         return;
        }
       
        Iterator<FileItem> it = fileList.iterator();
       
        /** 上传路径 */
        String upload_path = "";
        /** 返回类型 */
        String return_type = "";
        /** 用于处理多个文件 */
        List<FileItem> itemList = new ArrayList<FileItem>();
       
        while (it.hasNext()) {
         FileItem item = it.next();
         if (item.isFormField()) {
          String formFileName = item.getFieldName();
          if ("upload_path".equals(formFileName)) {
           upload_path = item.getString();
          } else if ("return_type".equals(formFileName)) {
           return_type = item.getString();
          }
         } else {
             itemList.add(item);
            }
        }
       
        if (! upload_path.endsWith("/")) {
         upload_path += "/";
        }
       
        upload_path += FileUploadUtil.getCurrentYMR("/");
       
        File dir = new File(upload_path);
        if (! dir.exists()) {
         dir.mkdirs();
        }
       
        /** 用于返回页面显示 多个之间","分割 */
        String returnString = "";
       
        for (FileItem fileItem : itemList) {
         String fileName = fileItem.getName();
           
            if (fileName == null || fileName.trim().equals("")) {
                return;
            }
           
            String postfix = "";
            if (fileName.lastIndexOf(".") >= 0) {
             postfix = fileName.substring(fileName.lastIndexOf(".") + 1);
            }
           
            /** 文件名称 */
            fileName = FileUploadUtil.getCurrentYMR("_") + "_" + FileUploadUtil.createUnique() + "." + postfix;
           
            /** 文件绝对路径 */
            String filePath = upload_path + "/" + fileName;
           
            File saveFile = new File(filePath);
            try {
             
             fileItem.write(saveFile);
             
             /** 1 表示上传文件并返回[文件名.扩展名]
              *  2 表示上传图片并生成(商品封面图片)缩略图
              *  3 表示上传图片并生成(商品相册图片)缩略图
              *  4 表示上传图片并生成(会员头像)缩略图
              */
             if ("1".equals(return_type)) {
           returnString = returnString + FileUploadUtil.getCurrentYMR("/") + "/" + fileName;
          } else if ("2".equals(return_type)) {
           String width_height = ImageUtil.getInstance().getWidthHeight(filePath);
           ImageUtil.getInstance().createGoodsImg(filePath, filePath + "_" + width_height, postfix, width_height);
           returnString = returnString + FileUploadUtil.getCurrentYMR("/") + "/" + fileName + "_" + width_height + ",";
          } else if ("3".equals(return_type)) {
           String width_height = ImageUtil.getInstance().getWidthHeight(filePath);
           ImageUtil.getInstance().createGoodsAlbumImg(filePath, filePath + "_" + width_height, postfix, width_height);
           returnString = returnString + FileUploadUtil.getCurrentYMR("/") + "/" + fileName + "_" + width_height + ",";
          } else if ("4".equals(return_type)) {
           String w_h = ImageUtil.getInstance().createHeadpicImg(filePath, filePath, postfix);
           returnString = returnString + FileUploadUtil.getCurrentYMR("/") + "/" + fileName + "&" + w_h + ",";
          }
             
            } catch (Exception e) {
             response.getWriter().print("ERROR:" + e.getMessage());
             return;
            }
        }
       
        /** 多张图片 则去掉后面"," */
        if (returnString.endsWith(",")) {
         returnString = returnString.substring(0, returnString.length() - 1);
        }
       
        response.getWriter().print("SUCCESS:" + returnString);
    }
}

 

 

目录
相关文章
|
24天前
纯css3发光霓虹灯文字闪烁特效代码
纯css3发光霓虹灯文字闪烁特效代码是一款彩色的店铺名称文字动画特效。
32 6
|
24天前
纯css3加载loading发光变色动画代码
纯css3加载loading发光变色动画特效代码是一款基于css3 keyframes属性实现的发光变色圆点串联旋转loading加载动画
22 2
|
1月前
|
JSON 移动开发 数据格式
html5+css3+js移动端带歌词音乐播放器代码
音乐播放器特效是一款html5+css3+js制作的手机移动端音乐播放器代码,带歌词显示。包括支持单曲循环,歌词显示,歌曲搜索,音量控制,列表循环等功能。利用json获取音乐歌单和歌词,基于html5 audio属性手机音乐播放器代码。
105 6
|
7月前
|
Java 开发者
Servlet 教程 之 Servlet 文件上传 1
Servlet 文件上传教程展示了如何利用 HTML 表单和 Servlet 处理文件上传。关键点包括:POST 方法的 form,enctype 设为 &quot;multipart/form-data&quot;,以及 action 指向如 UploadServlet 的处理程序。所需的 jar 包有 commons-fileupload-1.3.2 和 commons-io-2.5.jar。Servlet 3.0 已内置文件上传支持,无需额外组件。示例的 upload.jsp 文件包含一个单文件上传表单,使用 input[type=&quot;file&quot;] 元素。
84 5
|
7月前
|
编解码 前端开发
编写代码中常见问题汇总(html和css)
编写代码中常见问题汇总(html和css)
61 0
|
4月前
|
前端开发
简单几行代码CSS实现网页自动打文字效果
简单几行代码CSS实现网页自动打文字效果
58 1
简单几行代码CSS实现网页自动打文字效果
|
4月前
|
前端开发
HTML静态网页设计作业、仿写大学官网 (力争使用最少的Html 、CSS代码实现)
这篇文章展示了一个仿大学官网的HTML静态网页设计作业,重点在于使用最少的HTML和CSS代码实现页面效果,并便于后期维护。
HTML静态网页设计作业、仿写大学官网 (力争使用最少的Html 、CSS代码实现)
|
7月前
|
XML 数据格式
Servlet 教程 之 Servlet 文件上传 3
该教程介绍了如何使用Servlet进行文件上传。在web.xml中配置了Servlet `UploadServlet`,类为`com.baidu.test.UploadServlet`,映射路径为`/TomcatTest/UploadServlet`。用户需通过创建的HTML表单提交文件,访问URL为:http://localhost:8080/TomcatTest/upload.jsp。
38 0
|
4月前
|
前端开发
零基础 CSS 入门问题之CSS 代码的一般格式是什么样的
零基础 CSS 入门问题之CSS 代码的一般格式是什么样的
|
6月前
|
编解码 前端开发
编写代码中常见问题汇总(html和css)
text-indent用于首行缩进,line-height与height相同实现垂直居中;vertical-align:middle用于行内元素居中;text-align:center做水平居中;list-style:none清除列表符号;overflow:hidden隐藏溢出;background-repeat:no-repeat阻止平铺;float:left实现横排;相对定位父元素,绝对定位子元素;box-sizing调整盒子模型;用边框或overflow解决盒子塌陷;
59 5