jsp图片或者文件上传

直接发代码了 这是我一直以来使用的上传代码


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*,java.io.*" %>
<%@ page import="java.text.SimpleDateFormat" %>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="org.apache.commons.fileupload.disk.*"%>
<%@ page import="org.apache.commons.fileupload.servlet.*" %>
<%@ page import="org.json.simple.*" %>
<%
    //获取action路径,图片存放路径
    //String actionUrl=request.getParameter("actionUrl");
    String imageUrl=request.getParameter("folderName");
    //System.out.println("文件的目录路径是"+imageUrl);
    String resultMsg=null;
    //文件保存目录路径
    String savePath = pageContext.getServletContext().getRealPath("/") + imageUrl+"/";
    String url = this.getClass().getClassLoader().getResource("/")
            .toString().replace("WEB-INF/classes/", "").replace("file:/", "");
    //System.out.println("文件的目录路径是"+savePath);
    //文件保存目录URL
    String saveUrl  = request.getContextPath() + "/"+imageUrl+"/";
    //文件名称
    String newFileName="";
    //文件大小
    long fileSize=0;
    //定义允许上传的文件扩展名
    String[] fileTypes = new String[]{"gif", "jpg", "jpeg", "png", "bmp","GIF","JPG","JPEG","PNG","BMP"};
    //最大文件大小
    long maxSize = 1000000;
    response.setContentType("text/html; charset=UTF-8");
    if(!ServletFileUpload.isMultipartContent(request)){
      resultMsg="请选择文件!";
    }else{
    //检查目录
     File uploadDir = new File(savePath);
     if(!uploadDir.isDirectory()){
       out.println(savePath);
       resultMsg="上传目录不存在!";
       uploadDir.mkdir();
     }else{
       if(!uploadDir.canWrite()){
        resultMsg="上传目录没有读写权限!";
       }else{
        //创建文件夹
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String ymd = sdf.format(new Date());
        savePath += ymd + "/";
        saveUrl += ymd + "/";
        File dirFile = new File(savePath);
        if (!dirFile.exists()) {
            dirFile.mkdirs();
        }
        FileItemFactory factory = new DiskFileItemFactory();
        ServletFileUpload upload = new ServletFileUpload(factory);
        upload.setHeaderEncoding("UTF-8");
        List items = upload.parseRequest(request);
        Iterator itr = items.iterator();
        while (itr.hasNext()) {
            FileItem item = (FileItem) itr.next();
            String fileName = item.getName();
            fileSize = item.getSize();
           if (!item.isFormField()) {
            //检查文件大小
            if(item.getSize() > maxSize){
              resultMsg="上传文件大小超过限制!";
            }else{
              //检查扩展名
              String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
              if(!Arrays.<String>asList(fileTypes).contains(fileExt)){
               resultMsg="上传文件扩展名是不允许的扩展名!";
              }else{
                 SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
                 newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
                 try{
                    File uploadedFile = new File(savePath, newFileName);
                    item.write(uploadedFile);
                 }catch(Exception e){
                   resultMsg="上传文件失败!";
                }      
              }
            }
          }
        }
       }
     }
    }
        String uploadUrl=saveUrl+newFileName;
        System.out.print(newFileName);
        if(uploadUrl.indexOf(".")<0){
          uploadUrl="";
        }
            try {
                   if(resultMsg!=null){
                     response.getWriter().print("<script>alert(\""+resultMsg+"\");</script>");
                   }                        
                   String resultStr="{\"id\":\""+1000+"\",\"fileName\":\""+newFileName+"\",\"attachmentPath\":\""+uploadUrl+"\",\"attachmentSize\":\""+fileSize+"\"}";
                   response.getWriter().print(resultStr);                    
                } catch (IOException e) {
                    e.printStackTrace();                           
                }
%>
 由于配合使用了dwz框架 要求数据格式是json格式 所以里面的一些提示信息改成这样 但是应该不影响试用 只要稍微调整一下就好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值