zoukankan      html  css  js  c++  java
  • 用Commons组件里upload时候参数的问题

    使用FileUpload的时候,不能再使用getParameter来取得参数了。这时候使用另外的方式来取得参数。看程序
    import java.io.File;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Iterator;
    import java.util.List;

    import javax.servlet.ServletConfig;
    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.pegasus.kaka.img.tools.ImageManager;
    import com.pegasus.kaka.tools.XMLUtils;

    public class FileUploadServlet extends HttpServlet {
    public static final SimpleDateFormat SDF=new SimpleDateFormat("yyyyMMdd");
    private static final long serialVersionUID = 1L;
    // 定义文件的上传路径
    private String uploadPath = "D:\\";// 1247038_7c86df6f1e1956f9722b67e33ba6bbaa.jpg
    // 限制文件的上传大小
    private int maxPostSize = 100 * 1024 * 1024;

    public FileUploadServlet() {
    super();
    }

    @Override
    public void init(ServletConfig config) throws ServletException {       
    super.init(config);
    if(getServletContext().getInitParameter("folder")!=null)
    uploadPath=getServletContext().getInitParameter("folder");
    }

    public void destroy() {
    super.destroy();
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doPost(request, response);

    }

    @SuppressWarnings("unchecked")
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    response.setCharacterEncoding("UTf-8");
    //默认的一些参数
    int product_id=0,class_id=0;      
    //如果标签为空的时候让其为tag吧
    String tag="";    
    String url="";
    // 保存文件到服务器中
    DiskFileItemFactory factory = new DiskFileItemFactory();
    factory.setSizeThreshold(4096);
    PrintWriter out=response.getWriter();
    ServletFileUpload upload = new ServletFileUpload(factory);
    upload.setHeaderEncoding("UTF-8");
    upload.setSizeMax(maxPostSize);
    try {
    List<FileItem> fileItems = upload.parseRequest(request);
    Iterator<FileItem> iter = fileItems.iterator();
    String filename="";
    while (iter.hasNext()) {

    FileItem item = iter.next();
    //    为文件类型
    if (!item.isFormField()) {
    String orginalName = item.getName();
    String name=SDF.format(new Date())+System.currentTimeMillis()+orginalName.substring(orginalName.lastIndexOf("."));
    try {

    File file=new File(uploadPath +"original"+File.separator+ name);
    filename=file.getName();
    item.write(file);
    ImageManager.getThumbnail(file,uploadPath);
    url="/java/img/thumbnail/"+name;


    } catch (Exception e) {

    out.println(e.toString());
    }
    }else//表单数据..
    {
    if(item.getFieldName().equals("Product_ID")){
    product_id=Integer.parseInt(item.getString("UTF-8"));
    continue;
    }
    if(item.getFieldName().equals("Class_ID")){
    class_id=Integer.parseInt(item.getString("UTF-8"));
    continue;
    }
    if(item.getFieldName().equals("Tag")){
    // tag=item.getString();
    tag=item.getString("UTF-8");
    continue;
    }   

    }

    }ImageManager.insertIntoDB(product_id,filename,tag,class_id,url);
    String result=XMLUtils.XML_HEAD+"<result>"+"图片上传成功"+"</result>\n<url>"+url+"</url>\n<name>"+filename+"</name>";
    out.write(result);
    } catch (FileUploadException e) {
    out.println(e.toString());
    } finally{
    out.flush();
    out.close();
    }

    }
    }
    注意加粗体的部分是对表单数据处理,这里接受的数据时Flex客户端post过来的,使用其它的方式传递应该也可以。
  • 相关阅读:
    15个华丽的扁平风格的登录界面设计示例
    12款很酷的使用大头照的国外名片设计作品
    高清壁纸下载:15款精美的2014年元旦桌面壁纸
    Harp – 内置常用预处理器的静态 Web 服务器
    分享245款高质量的图标素材【免费下载】
    经典网页设计:关注用户体验的20个华丽网站
    使用 CSS3 实现超炫的 Loading(加载)动画效果
    你知道网页设计中最常用的15张图片素材吗?
    Koa – 更加强大的下一代 Node.js Web 框架
    Myth – 支持变量和数学函数的 CSS 预处理器
  • 原文地址:https://www.cnblogs.com/macula7/p/1960399.html
Copyright © 2011-2022 走看看