Struts2框架下使用Kindeditor上传图片

2023-05-16

之前的项目是用Spring的模式上传Kindeditor图片到服务器,但是现在这个项目里面只有Struts2框架所以跟Spring不一样,以下为代码:

public Object fileUpload(){
		String savePath=this.getCurSession().getServletContext().getRealPath("")+"/attached";
        //文件保存路径
        String saveUrl=this.getCurSession().getServletContext().getRealPath("")+"/attached/images/";
        HttpServletResponse response=ServletActionContext.getResponse();
        PrintWriter out = null; //输出流 
        try {  
            out = response.getWriter();  
        } catch (IOException e1) {  
            e1.printStackTrace();  
        }  
        //定义能上传的文件格式
        HashMap<String, String> extMap=new HashMap<String, String>();
        extMap.put("image", "gif,jpg,jpeg,png,bmp");
        extMap.put("flash", "swf,flv");  
        extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");  
        extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,xml,txt,zip,rar,gz,bz2"); 
        //最大的文件大小
        long maxSize = 1000000;
        response.setContentType("text/html; charset=UTF-8");
        if(!ServletFileUpload.isMultipartContent(this.getCurRequest())){
        	return getError("请选择文件");
        }
        File uploadDir=new File(savePath);
        if(!uploadDir.isDirectory()){
        	uploadDir.mkdirs();
        	//return getError("上传目录不存在");
        }
        if(!uploadDir.canWrite()){
        	return getError("没有权利");
        }
        String dirName=this.getCurRequest().getParameter("dir");
        if(dirName==null){
        	dirName="image";
        }
        if(!extMap.containsKey(dirName)){
        	return getError("目录名不正确");
        }
        savePath+=dirName+"/";
        saveUrl+=dirName+"/";
        File saveDirFile=new File(savePath);
        if(!saveDirFile.exists()){
        	saveDirFile.mkdirs();
        }
        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");
        MultiPartRequestWrapper  wrapper = (MultiPartRequestWrapper) this.getCurRequest();
        String fileName=wrapper.getFileNames("imgFile")[0];
        File file=wrapper.getFiles("imgFile")[0];
        String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();  
        if (!Arrays.<String> asList(extMap.get(dirName).split(",")).contains(fileExt)) {  
            out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName)  
                    + "格式。"));  
            return null;  
        }
        if(file.length()>maxSize){
        	out.print(getError("上传文件大小超过限制"));
        	return null;
        }
        String newImgName = sdf.format(new Date()) + "_"  
                + new Random().nextInt(1000) + "." + fileExt;  
        byte[] buffer = new byte[1024];
        FileOutputStream fos;  
        // 获取内存中当前文件输入流  
        InputStream in;  
        try {  
            fos = new FileOutputStream(savePath + "/" + newImgName);  
            in = new FileInputStream(file);  
            int num = 0;  
            while ((num = in.read(buffer)) > 0) {  
                fos.write(buffer, 0, num);  
            }  
            in.close();  
            fos.close();  
        } catch (FileNotFoundException e1) {  
            e1.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } 
        com.alibaba.fastjson.JSONObject obj = new com.alibaba.fastjson.JSONObject();  
        obj.put("error", 0);  
        obj.put("url", saveUrl + "/" + newImgName);  
        out.println(obj.toJSONString());  
        return null;  
	}

/**
	 * kindeditor错误报告
	 * @param message 错误原因
	 * @return
	 */
	private String getError(String message) {  
        com.alibaba.fastjson.JSONObject obj = new com.alibaba.fastjson.JSONObject();  
        obj.put("error", 1);  
        obj.put("message", message);  
        return obj.toJSONString();  
    } 


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Struts2框架下使用Kindeditor上传图片 的相关文章

随机推荐

  • 模糊查询

    lt select id 61 34 findByUserIdMonthAttend 34 resultMap 61 34 BaseResultMap 34 gt SELECT lt include refid 61 34 Base Col
  • 字符串连接

    StringBuilder StringBuffer String三者区别 1 运行速度 xff0c 在这方面运行速度快慢为 xff1a StringBuilder gt StringBuffer gt String String最慢的原因
  • 集合

    Java集合类存放于 java util 包中 xff0c 是一个用来存放对象的容器 集合只能存放对象 比如你存一个 int 型数据 1放入集合中 xff0c 其实它是自动转换成 Integer 类后存入的 xff0c Java中每一种基本
  • 事务

    事务必须服从ISO IEC所制定的ACID原则 ACID是原子性 xff08 atomicity xff09 一致性 xff08 consistency xff09 隔离性 xff08 isolation xff09 和持久性 xff08
  • vue select 获取value和lable

    vue select控件在选择时需要把id和name两个值都获取到 xff0c 实现方案如下 xff1a select控件代码 lt FormItem label 61 34 物资类型 xff1a 34 prop 61 34 supplyT
  • vue中render函数子组件调用父组件方法

    父组件render函数内容 return h swichbutton swichbutton为子组件 props row params row valveState props声明给子组件传递的参数 xff0c 子组件通过以下方式接收 pr
  • Couldn't find preset "es2015" relative to directory

    修改 babelrc文件内容如下 xff0c 运行后报错 Module build failed Error Couldn t find preset es2015 relative to directory 34 presets 34 3
  • vue运行同时被localhost和ip地址访问

    在index js文件下修改host内容 xff0c localhost改为本机ip host 39 192 168 X XX 39 can be overwritten by process env HOST port 8080 can
  • AppData\Roaming\npm-cache\_logs

    npm install报如下错误 xff1a npm ERR code ELIFECYCLE npm ERR errno 1 npm ERR bhwechat 64 1 0 0 dev 96 webpack dev server inlin
  • 你和高手的差距,就在一念之间

    我一直做软件开发和技术管理工作 xff0c 虽然在做联合创始人期间也参与2B的市场销售运营等众多事情 xff0c 但2C的电商卖货这件事从未体验过 想起小学时学的小马过河的故事 xff0c 要想知道怎么做 xff0c 不能只听别人的说法 x
  • 动态IF语句拼接sql语句

    动态IF语句拼接sql语句 lt 列表 正式 非居民 gt lt select id 61 34 listFormatNodWeller 34 resultType 61 34 com jczb binhe oa model Nodwell
  • swagger基本注解

    与使用Swagger核心注释注释模型类以提供其他元数据相同 xff0c 可以注释控制器及其方法和方法参数 64 Api描述了整个控制器 64 ApiOperation用于方法级别的描述 64 ApiParam用于方法参数 64 RestCo
  • sql语句foreach

    lt 查询 新户水表信息 gt lt select id 61 34 getWaterMeterStartByMeterCodeNew 34 parameterType 61 34 com jczb binhe oa model Water
  • groupconcat函数

    比如select group concat name MySQL中group concat函数 语法如下 xff1a group concat DISTINCT 要连接的字段 Order BY ASC DESC 排序字段 Separator
  • echart百度地图取消点击事件

    在下载的nodemodule包中修改代码 var bmap 61 bmapModel bmap 61 new BMap Map bmapRoot enableMapClick false
  • JavaEE规范

    十三个规范为 xff1a JDBC xff08 java Database Connectivity xff09 xff1a JDBC API为访问不同的数据库提供了一种统一的途径 JNDI Java Name and Directory
  • Java反射

    什么时候用 Java程序中许多对象在运行时出现两种类型 xff1a 编译时类型和运行时类型 xff0c 例如Person p 61 New Student 这时生成的p变量的编译时类型为Person xff0c 运行时类型为Student
  • css3 animation 实现帧动画

    先上代码 xff1a lt DOCTYPE html gt lt html gt lt head gt lt title gt lt title gt lt style gt ani container width 125px height
  • 从原理到实战:vue中的provide/inject让你的代码更优美

    前言 关于 vue 中的 provide inject 这一主题 xff0c 它可以被看作是一种高级的依赖注入机制 xff0c 允许跨层级组件实现状态共享 xff0c 从而提高代码的可维护性和扩展性 在这篇文章中 xff0c 我将从原理到实
  • Struts2框架下使用Kindeditor上传图片

    之前的项目是用Spring的模式上传Kindeditor图片到服务器 xff0c 但是现在这个项目里面只有Struts2框架所以跟Spring不一样 xff0c 以下为代码 xff1a public Object fileUpload St