Heim  >  Artikel  >  php教程  >  kindeditor与Struts2框架整合无法上传图片的问题

kindeditor与Struts2框架整合无法上传图片的问题

WBOY
WBOYOriginal
2016-06-13 11:36:26886Durchsuche

由于struts框架对request对象做了封装,原来处理上传图片的upload_json.jsp文件无法使用了,于是对kindeditor中处理上传图片的upload_json.jsp文件进行重写,通过多次测试后,成功实现了图片的上传。


    
    
    
    
    
    
    
    

            //文件保存目录路径 img_upload是服务器存储上传图片的目录名
        String savePath = request.getSession().getServletContext().getRealPath("/")+ "img_upload/";

        //文件保存目录URL
        String saveUrl = request.getContextPath() + "/img_upload/";

        //定义允许上传的文件扩展名
        String[] fileTypes = new String[] { "gif", "jpg", "jpeg", "png","bmp" };

        //允许最大上传文件大小
        long maxSize = 1024000;

        //Struts2 请求 包装过滤器
        MultiPartRequestWrapper wrapper = (MultiPartRequestWrapper) request;

        //获得上传的文件名
        String fileName = wrapper.getFileNames("imgFile")[0];

        //获得文件过滤器
        File file = wrapper.getFiles("imgFile")[0];

        //得到上传文件的扩展名
        String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();

        //检查扩展名
        if (!Arrays. asList(fileTypes).contains(fileExt)) {
         out.println(getError("上传文件扩展名是不允许的扩展名。"));
         return;
        }
        //检查文件大小
        if (file.length() > maxSize) {
         out.println(getError("上传文件大小超过限制。"));
         return;
        }

        //检查目录
        File uploadDir = new File(savePath);
        if (!uploadDir.isDirectory()) {
         out.println(getError("上传目录不存在。"));
         return;
        }
        //检查目录写入权限
        if (!uploadDir.canWrite()) {
         out.println(getError("上传目录没有写入权限。"));
         return;
        }

        //重构上传图片的名称
        SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
        String newImgName = df.format(new Date()) + "_"+ new Random().nextInt(1000) + "." + fileExt;

        //设置 KE 中的图片文件地址
    String newFileName = request.getScheme() + "://"+ request.getServerName() + ":" + request.getServerPort()
        + saveUrl + newImgName;

        byte[] buffer = new byte[1024];

        //获取文件输出流
        FileOutputStream fos = new FileOutputStream(savePath + newImgName);

        //获取内存中当前文件输入流
        InputStream in = new FileInputStream(file);

        try {
         int num = 0;
           while ((num = in.read(buffer)) > 0) {
         fos.write(buffer, 0, num);
         }
        } catch (Exception e) {
         e.printStackTrace(System.err);
        } finally {
          in.close();
         fos.close();
        }

        //发送给 KE

        JSONObject obj = new JSONObject();
        obj.put("error", 0);
        obj.put("url", saveUrl + newImgName);
        out.println(obj.toJSONString());
        %>
                 JSONObject obj = new JSONObject();
         obj.put("error", 1);
         obj.put("message", message);
         return obj.toJSONString();
        }
        %>

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn