把input—file获取的图片存到本地绝对路劲

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_39959061/article/details/77528729
package com.synjones.wechatmanage;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Collection;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

import org.apache.commons.fileupload.FileItemIterator;
import org.apache.commons.fileupload.FileItemStream;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.util.Streams;

public class TestSevlet extends HttpServlet implements Servlet
{
    File tmpDir = null;// 初始化上传文件的临时存放目录
    File saveDir = null;// 初始化上传文件后的保存目录
    
    String tmpPath = "c://tmpdir";
    String savePath = "c://updir";

    private static final long serialVersionUID = 1L;

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        super.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        try
        {
            String xxbh = null;
            if (ServletFileUpload.isMultipartContent(request))
            {
                DiskFileItemFactory dff = new DiskFileItemFactory();// 创建该对象
                dff.setRepository(tmpDir);// 指定上传文件的临时目录
                dff.setSizeThreshold(1024000);// 指定在内存中缓存数据大小,单位为byte
                ServletFileUpload sfu = new ServletFileUpload(dff);// 创建该对象
                sfu.setFileSizeMax(5000000);// 指定单个上传文件的最大尺寸
                sfu.setSizeMax(10000000);// 指定一次上传多个文件的总尺寸
                FileItemIterator fii = sfu.getItemIterator(request);// 解析request
                                                                    // 请求,并返回FileItemIterator集合
                while (fii.hasNext())
                {
                    FileItemStream fis = fii.next();// 从集合中获得一个文件流
                    if (!fis.isFormField() && fis.getName().length() > 0)// 过滤掉表单中非文件域
                    {
                        String fileName = null;
                        
                        if(fis.getName().lastIndexOf("//") != -1){
                            fileName = fis.getName().substring(fis.getName().lastIndexOf("//"));// 获得上传文件的文件名
                        } else
                        {
                            fileName = fis.getName();
                        }
                        BufferedInputStream in = new BufferedInputStream(fis.openStream());// 获得文件输入流
                        BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(savePath + File.separator + fileName)));// 获得文件输出流
                        Streams.copy(in, out, true);// 开始把文件写到你指定的上传文件夹
                    } else if(fis.getContentType() == null)
                    {
                        String InName = fis.getFieldName();
                        if("schoolid".equals(InName))
                        {
                            InputStream in = fis.openStream();
                            ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
                            byte[] data = new byte[4096];  
                            int count = -1;  
                            while((count = in.read(data,0,4096)) != -1)  
                                outStream.write(data, 0, count);  
                            xxbh = new String(outStream.toByteArray(),"utf-8");
                            in.close();
                        }
                    }
                }
                response.getWriter().println(xxbh);// 终于成功了,还不到你的上传文件中看看,你要的东西都到齐了吗
            }
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    @Override
    public void init(ServletConfig config) throws ServletException
    {
        /* 对上传文件夹和临时文件夹进行初始化 */
        super.init();
        tmpDir = new File(tmpPath);
        saveDir = new File(savePath);
        if (!tmpDir.isDirectory())
            tmpDir.mkdir();
        if (!saveDir.isDirectory())
            saveDir.mkdir();
    }
}

博主设置当前文章不允许评论。

没有更多推荐了,返回首页