首页>代码>java头像裁剪上传实例>/myjcrop/src/com/jiong/uploadify/UploadServlet.java
package com.jiong.uploadify;

import java.io.File;
import java.io.IOException;
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.jenmin.dao.UserDao;

public class UploadServlet extends HttpServlet
{

    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = -919197936280771293L;

    UserDao ud = UserDao.getInstance();

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

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
        String userid = request.getParameter("userid");

        if (userid != null && !userid.equals(""))
        {
            String savePath = generateDir();
            processUpload(request, response, savePath, Integer.parseInt(userid));
        }

    }

    /*
     * 上传处理方法
     */
    @SuppressWarnings("unchecked")
    public void processUpload(HttpServletRequest request, HttpServletResponse response, String savePath, int userid)
    {

        DiskFileItemFactory factory = new DiskFileItemFactory();
        // 缓存大小512KB
        factory.setSizeThreshold(524288);
        // 设置一旦文件大小超过getSizeThreshold()的值时数据存放在硬盘的目录
        factory.setRepository(new File(savePath + "/temp"));
        // 初始化化上传控件
        ServletFileUpload upload = new ServletFileUpload(factory);
        // 指定单个上传文件的最大尺寸,单位:字节
        upload.setFileSizeMax(3145728);
        // 设置编码
        upload.setHeaderEncoding("UTF-8");

        List<FileItem> fileList = null;
        try
        {
            // 解析request请求
            fileList = upload.parseRequest(request);
        }
        catch(FileUploadException e)
        {
            e.printStackTrace();
        }

        Iterator<FileItem> it = fileList.iterator();
        String name = "";
        String filename = "";
        while (it.hasNext())
        {
            FileItem item = it.next();
            // 过滤掉表单中非文件域
            if (!item.isFormField())
            {
                // 获得上传文件的文件名
                name = item.getName();
                if (name != null && !name.trim().equals(""))
                {
                    // 生成文件名
                    filename = generateFileName(name);
                    File file = new File(savePath + "/" + filename);
                    try
                    {
                        item.write(file);
                        // 生成图片保存路径
                        String imgstr = this.getServletContext().getContextPath();
                        imgstr = imgstr + "/upload/" + filename;
                        // 更新数据库保存图片url
                        ud.updateImgBySql(imgstr, userid);

                        response.getWriter().write("http://localhost:8080" + imgstr);
                    }
                    catch(Exception e)
                    {
                        e.printStackTrace();
                    }
                }
            }
        }
    }

    /*
     * 初妾化文件存储路徿
     */
    private String generateDir()
    {
        String pathString = getServletConfig().getServletContext().getRealPath("/upload");
        String tempString = getServletConfig().getServletContext().getRealPath("/upload/temp");
        File dirPath = new File(pathString);
        File dirTemp = new File(tempString);
        if (!dirPath.exists())
        {
            dirPath.mkdirs();
        }
        if (!dirTemp.exists())
        {
            dirTemp.mkdirs();
        }
        return pathString;
    }

    /*
     * 生成文件名
     */
    private String generateFileName(String name)
    {
        long currentTime = System.currentTimeMillis();
        int i = (int) (Math.random() * 1000D + 1.0D);
        long result = currentTime + i;
        String filename = String.valueOf(result) + getFileExt(name);
        return filename;
    }

    /*
     * 获取文件格式
     */
    private String getFileExt(String name)
    {
        int pos = name.lastIndexOf(".");
        if (pos > 0)
        {
            return name.substring(pos);
        }
        else
        {
            return name;
        }
    }
}
最近下载更多
小开子  LV1 2021年6月4日
1368448963  LV1 2020年11月5日
qqqqddd  LV1 2020年10月26日
miaoss2  LV1 2020年7月31日
jdczuidaima  LV16 2020年6月28日
tsy666666  LV8 2020年2月16日
wxd1997  LV13 2020年1月9日
zywzywzyw1  LV17 2019年9月28日
jaonsang  LV25 2019年6月14日
2399431755  LV12 2019年4月3日
最近浏览更多
刘亦菲9527  LV15 2022年8月1日
我不划水 2022年4月24日
暂无贡献等级
abai250  LV1 2022年3月29日
zhuohanyuan  LV10 2022年1月7日
tangjj7260  LV18 2021年11月12日
czr2233  LV9 2021年9月14日
1964867825 2021年9月6日
暂无贡献等级
天天  LV9 2021年9月4日
小开子  LV1 2021年6月4日
最代码-宋家辉  LV61 2021年5月16日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友