加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java实现文件上传代码

发布时间:2020-12-15 00:11:42 所属栏目:Java 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; i

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

import java.io.File;  
import java.io.FileOutputStream;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.OutputStream;  
import java.io.PrintWriter;  
import java.text.DateFormat;  
import java.text.SimpleDateFormat;  
import java.util.Date;  
import java.util.List;  
import java.util.UUID;  
  
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 org.apache.commons.io.IOUtils;  
  
public class FileUpload extends HttpServlet {  
  
    public void doGet(HttpServletRequest request,HttpServletResponse response)  
            throws ServletException,IOException {  
          
        request.setCharacterEncoding("UTF-8");  
        response.setContentType("text/html;charset=utf-8");  
        PrintWriter out=response.getWriter();  
        //指定文件存放目录  
        String storePath=getServletContext().getRealPath("WEB-INF/files");  
        File file=new File(storePath);  
        //如果目录不存在,需要创建  
        if(!file.exists()){  
            file.mkdirs();  
        }  
        //要检查是不是enctype=multipart/form-data提交过来的数据  
        boolean isMultipart=ServletFileUpload.isMultipartContent(request);  
        //如果不是,需要处理  
        if(!isMultipart){  
            out.write("请将enctype设置成multipart/form-data类型");  
            response.setHeader("Refresh","1;URL="+request.getContextPath());  
            return;  
        }  
        //去生成一个文件上传的FileUpload对象  
        DiskFileItemFactory factory=new DiskFileItemFactory();  
        //设置一个临时目录  
        //factory.setRepository(new File("E:/temp"));temp文件需要临时创建,我已经删掉了  
          
        ServletFileUpload upload=new ServletFileUpload(factory);  
        //将用户的请求转化为List  
        try {  
            List items=upload.parseRequest(request);  
            //遍历List中的数据  
            for (FileItem item : items) {  
                //如果部分文件没有上传  
                if("".equals(item.getName())){  
                    continue;  
                }  
                //判断是普通字段  
                if(item.isFormField()){  
                    String fieldName=item.getFieldName();  
                    String fieldValue=item.getString("UTF-8");  
                    System.out.println(fieldName+":"+fieldValue);  
                }else{  
                    //是上传的文件  
                    //需要获取文件名,有可能是路径  
                    String fileName=item.getName();  
                    fileName=fileName.substring(fileName.lastIndexOf(File.separator)+1);  
                    //文件名同名问题  
                    fileName=UUID.randomUUID().toString()+"_"+fileName;  
                    //解决一个文件夹下的文件过多的问题  
                    //用时间来生成子目录  
                    //String childPath=generateDir(storePath);  
                    //用hashcode来生成子目录  
                    String childPath=generateDir(storePath,fileName);  
                    //获取上传文件的数据  
                    InputStream is=item.getInputStream();  
                    OutputStream os=new FileOutputStream(storePath+File.separator+childPath+File.separator+fileName);  
                    IOUtils.copy(is,os);  
                    os.close();  
                    is.close();  
                    //item.delete();//清空临时文件  
                }  
            }  
            out.write("文件上传成功继续上传");  
        } catch (FileUploadException e) {  
            e.printStackTrace();  
        }  
    }  
  
  
    private String generateDir(String storePath,String fileName) {  
        int hashcode=fileName.hashCode();  
        int dir1=hashcode &  0xf;  
        int dir2=(hashcode & 0xf0)>>4;  
        String childPath=dir1+File.separator+dir2;  
        File file=new File(storePath,childPath);  
        if(!file.exists()){  
            file.mkdirs();  
        }  
        return childPath;  
    }  
  
  
    private String generateDir(String storePath) {  
        DateFormat df=new SimpleDateFormat("yyyyMMddhhmmss");  
        String childPath=df.format(new Date());  
        File file=new File(storePath,childPath);  
        if(!file.exists()){  
            file.mkdirs();  
        }  
        return childPath;  
    }  
  
  
    public void doPost(HttpServletRequest request,IOException {  
        this.doGet(request,response);  
  
    }  
  
}  

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读