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.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);
    }
}

 

 

时间: 2024-10-25 13:12:25

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

Servlet实现文件上传,可多文件上传示例_javascript技巧

一.Servlet实现文件上传,需要添加第三方提供的jar包 下载地址: 1) commons-fileupload-1.2.2-bin.zip:  点击打开链接 2)  commons-io-2.3-bin.zip:    点击打开链接  接着把这两个jar包放到 lib文件夹下: 二:文件上传的表单提交方式必须是POST方式, 编码类型:enctype="multipart/form-data",默认是 application/x-www-form-urlencoded 比如: &

Servlet实现文件上传

一.组件准备          Servlet实现文件上传,需要添加第三方提供的jar包          commons-fileupload-1.2.2-bin.zip           commons-io-2.3-bin.zip             在http://commons.apache.org/downloads/index.html找,然后放在如下目录下                  文件上传的表单提交方式必须是POST方式,          编码类型:enctyp

java-我写的servlet将文件上传到WEB-INF目录下,修改了jsp后文件消失了,急求!

问题描述 我写的servlet将文件上传到WEB-INF目录下,修改了jsp后文件消失了,急求! 解决方案 修改JSP文件后,应该是重新生成了.把上传的路径找在其它地方看看

PHP中codeigniter文件上传类代码实例

  codeigniter文件上传类代码实例 文件上传类 CodeIgniter 的文件上传类允许文件被上传.您可以设置指定上传某类型的文件及指定大小的文件. 处理过程 上传文件普遍的过程: 一个上传文件用的表单,允许用户选择一个文件并上传它. 当这个表单被提交,该文件被上传到指定的目录. 同时,该文件将被验证是否符合您设定的要求. 一旦文件上传成功,还要返回一个上传成功的确认窗口. 这里有一个简短的教程来显示这个过程.此后你将会找到相关的参考信息. 创建上传表单 运用文本编辑器创建一个名为up

Spring学习笔记2之表单数据验证、文件上传实例代码_java

在上篇文章给大家介绍了Spring学习笔记1之IOC详解尽量使用注解以及java代码,接下来本文重点给大家介绍Spring学习笔记2之表单数据验证.文件上传实例代码,具体内容,请参考本文吧! 一.表单数据验证 用户注册时,需要填写账号.密码.邮箱以及手机号,均为必填项,并且需要符合一定的格式.比如账号需要32位以内,邮箱必须符合邮箱格式,手机号必须为11位号码等.可以采用在注册时验证信息,或者专门写一个工具类用来验证:来看下在SpringMVC中如何通过简单的注释实现表单数据验证. 在javax

关于文件上传的代码。 可是点上传按钮一点反应没有啊。求指明错误

问题描述 <scriptlanguage="javascript"type="text/javascript">//<!CDATA[functionbtnUpLoad_onclick(){if((fileUpLoad.PostedFile.FileName!=null)&&(fileUpLoad.PostedFile.FilName!="")){StringstrFilePath=fileUpLoad.Poste

一个实用的php 文件上传类代码

这里是来自网络朋友的一个实现的文件上传类代码,我们详细的介绍了每个变量的用处,下面看看吧,有需要可以参考一下. <?php教程  /**   * 文件上传类   */  class uploadFile {   public $max_size = '1000000';//设置上传文件大小   public $file_name = 'date';//重命名方式代表以时间命名,其他则使用给予的名称   public $allow_types;//允许上传的文件扩展名,不同文件类型用"|&q

php Ajax实现异步文件上传的代码

php教程 ajax实现异步文件上传的代码 1:取得file对象 2:读取2进制数据 3:模拟http请求,把数据发送出去(这里通常比较麻烦) 在forefox下使用 xmlhttprequest 对象的 sendasbinary 方法发送数据: 4:完美实现 遇到的问题 目前仅有 firefox 可以正确上传文件.(chrome也可以采google.gears上传) 对于从firefox和chrome下读取到的文件数据好像不一样(不知道是否是调试工具的原因) chrome以及其他高级浏览器没有

多文件上传类代码

    真正支持单文件和多文件上传类代码,修正了$_FILES[$field]['name']中的$field不能用变量只能和表单中的文件名name="userfile"一致的缺点$_FILES['userfile']['name'],这里<input type="file" name="userfile"> 中的文件名可以随意取. //index.htm1.单文件上传<form method="post"