package com.hnust.research.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.hnust.research.domain.User;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

@Controller
@Scope("prototype")
public class CkeditorImg extends ActionSupport{
	private File upload;//文件
	private String uploadFileName;//文件名
	private String uploadContentType;//文件类型
	private String callback;
	
	/**
	 * 验证文件的合法性
	 * 处理ckeditor上传的图片,根据不同的用户,生成不同的文件夹,
	 * 路径格式:upload/username(用户名登录名)/201407(年月)/112131541132123.jpg
	 * 参考了网上csdn里的面一个同志的博客写出来的,这个execute里面并不要配置返回页面
	 * 这个上传文件的方法是给前台用户设计的,每个用户会根据自己的用户名和上传时间建立一个文件夹
	 */
	public String execute() throws Exception{
		HttpServletResponse response=ServletActionContext.getResponse();
		response.setCharacterEncoding("UTF-8");
		PrintWriter out=response.getWriter();
		
		// CKEditor提交的很重要的一个参数 
		callback=ServletActionContext.getRequest().getParameter("CKEditorFuncNum");
		User user=(User) ActionContext.getContext().getSession().get("user");
		if(user!=null){
			String expandName=uploadFileName.substring(uploadFileName.lastIndexOf(".")).toLowerCase();
			if(expandName.equals(".png")||expandName.equals(".gif")||expandName.equals(".bmp")||expandName.equals(".jpg")){//检查扩展名是否合法,bmp,jpg,png,gif
				if(upload.length()>600*1024){//文件超过600K
					out.println("<script type=\"text/javascript\">");    
		            out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",''," + "'图片大小不能超过600k');");   
		            out.println("</script>");  
		            return null;  
				}
				//进行文件上传操作
				InputStream is=new FileInputStream(upload);
				Date date=new Date();
				SimpleDateFormat formatter=new SimpleDateFormat("yyyyMM");
				String yyyymm=formatter.format(date);
				String fileName=java.util.UUID.randomUUID().toString()+expandName;
				String uploadPath=ServletActionContext.getServletContext().getRealPath("\\upload")+"\\images\\"+user.getUsername()+"\\"+yyyymm+"\\";
				String src="/Research/upload/"+"images/"+user.getUsername()+"/"+yyyymm+"/";
				File file=new File(uploadPath);
				if(!file.exists()){//不存在就创建这个目录
					file.mkdirs();
				}
				File toFile=new File(uploadPath,fileName);
				OutputStream os=new FileOutputStream(toFile);
				byte[] buffer=new byte[1024];
				int length=0;
				while((length=is.read(buffer))>0){
					os.write(buffer,0,length);
				}
				is.close();
				os.close();
				//上传成功之后,返回"图像"选项卡并显示图片
				System.out.println(uploadPath+fileName);
				 out.println("<script type=\"text/javascript\">"); 
			     out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",'" + src+fileName+ "','')");    
			     out.println("</script>");
			     return null;
			}else{//输入文件名不合法信息,这里是调用ckeditor自带的callFunction方法返回信息
				out.println("<script type=\"text/javascript\">");
				out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",''," + "'文件格式不正确(必须为.jpg/.gif/.bmp/.png文件)');");
				out.println("</script>");
				return null;
			}
		}else{
			System.out.println("未登录用户");
			out.println("<script type=\"text/javascript\">");
			out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",''," + "'请先登录再上传图片');");
			out.println("</script>");
			return null;
		}
	}
	
	
	public String adminImg() throws Exception{
		HttpServletResponse response=ServletActionContext.getResponse();
		response.setCharacterEncoding("UTF-8");
		PrintWriter out=response.getWriter();
		String expandName=uploadFileName.substring(uploadFileName.lastIndexOf(".")).toLowerCase();
		
		// CKEditor提交的很重要的一个参数 
		callback=ServletActionContext.getRequest().getParameter("CKEditorFuncNum");
		if(expandName.equals(".png")||expandName.equals(".gif")||expandName.equals(".bmp")||expandName.equals(".jpg")){//检查扩展名是否合法,bmp,jpg,png,gif
			if(upload.length()>600*1024){//文件超过600K
				out.println("<script type=\"text/javascript\">");    
	            out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",''," + "'图片大小不能超过600k');");   
	            out.println("</script>");  
	            return null;  
			}
			//进行文件上传操作
			InputStream is=new FileInputStream(upload);
			Date date=new Date();
			SimpleDateFormat formatter=new SimpleDateFormat("yyyyMM");
			String yyyymm=formatter.format(date);
			String fileName=java.util.UUID.randomUUID().toString()+expandName;
			String uploadPath=ServletActionContext.getServletContext().getRealPath("\\upload")+"\\admin\\images\\";
			String src="/Research/upload/admin/images/";
			File file=new File(uploadPath);
			if(!file.exists()){//不存在就创建这个目录
				file.mkdirs();
			}
			File toFile=new File(uploadPath,fileName);
			OutputStream os=new FileOutputStream(toFile);
			byte[] buffer=new byte[1024];
			int length=0;
			while((length=is.read(buffer))>0){
				os.write(buffer,0,length);
			}
			is.close();
			os.close();
			//上传成功之后,返回"图像"选项卡并显示图片
			System.out.println(uploadPath+fileName);
			 out.println("<script type=\"text/javascript\">"); 
		     out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",'" + src+fileName+ "','')");    
		     out.println("</script>");
		     return null;
		}else{//输入文件名不合法信息,这里是调用ckeditor自带的callFunction方法返回信息
			out.println("<script type=\"text/javascript\">");
			out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",''," + "'文件格式不正确(必须为.jpg/.gif/.bmp/.png文件)');");
			out.println("</script>");
			return null;
		}
	}
	
	public File getUpload() {
		return upload;
	}
	public void setUpload(File upload) {
		this.upload = upload;
	}
	public String getUploadFileName() {
		return uploadFileName;
	}
	public void setUploadFileName(String uploadFileName) {
		this.uploadFileName = uploadFileName;
	}
	public String getUploadContentType() {
		return uploadContentType;
	}
	public void setUploadContentType(String uploadContentType) {
		this.uploadContentType = uploadContentType;
	}
	 
}
最近下载更多
ziv5466123  LV7 2023年12月15日
xuweiwowzy  LV5 2023年7月30日
wanglei92  LV2 2023年6月26日
hosinvm  LV7 2022年11月18日
123456781  LV4 2022年7月13日
二十一画  LV10 2022年6月25日
微信网友_5963854197018624  LV7 2022年5月21日
buchifanqie  LV2 2022年3月22日
八云橙  LV1 2022年3月8日
行家文化  LV1 2022年2月8日
最近浏览更多
15103432984  LV2 3月17日
1203093322 2023年12月31日
暂无贡献等级
ziv5466123  LV7 2023年12月15日
2010160433  LV3 2023年11月30日
空中飞尘  LV13 2023年11月25日
1waxzsq212345  LV2 2023年11月22日
Henew168  LV2 2023年11月19日
去码头整点薯条  LV3 2023年11月15日
流连瓦盖法  LV7 2023年11月15日
毫无语  LV6 2023年10月19日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友