/*
 * Generated by MyEclipse Struts
 * Template path: templates/java/JavaClass.vtl
 */
package www.xwcms.net.struts.action;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.text.DecimalFormat;
import java.util.Iterator;
import java.util.List;
import java.util.Random;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

/** 
 * MyEclipse Struts
 * Creation date: 10-06-2013
 * 
 * XDoclet definition:
 * @struts.action parameter="method" validate="true"
 */
public class UploadFileAction extends DispatchAction {
	
	/**
	 * 简介:上传附件
	 * 作者:www.xwcms.net
	 * @throws UnsupportedEncodingException 
	 * 
	 */
	
	@SuppressWarnings( { "deprecation", "unchecked" })
	// 上传文件方法 前台调用
	public ActionForward fileAdd(ActionMapping mapping,
			ActionForm form, HttpServletRequest request,
			HttpServletResponse response) throws UnsupportedEncodingException {
		response.setCharacterEncoding("UTF-8"); //防止返回文件名是乱码 
		request.setCharacterEncoding("UTF-8");
		//获取前台页面数据
		String sizeLimit = request.getParameter("sizeLimit");//限制图片上传大小值
		
		boolean backValue=false;
		PrintWriter out = null;
		ThreadLocal<String> returnStr = new ThreadLocal<String>();
		
		String extName = ""; // 保存文件拓展名
		String newFileName = ""; // 保存新的文件名
		String ranFileName = getRandomFileName(); // 保存随机文件名
		String savePath = getAbsoluteBasePath(request); // 获取项目根路径
		savePath = savePath + "/uploadFile/"; //上传保存文件的路径
		File fa=new File(savePath);
		if(!fa.exists())//判断文件夹是否存在
		{
			fa.mkdir();
		}
		// 处理上传的文件
		boolean isMultipart = ServletFileUpload.isMultipartContent(request);
		if (isMultipart) {
			try {
				FileItemFactory factory = new DiskFileItemFactory();
				ServletFileUpload fileUpload = new ServletFileUpload(factory);
				// 设置文件大小(超过int 的范围会报错 注意 )
				fileUpload.setSizeMax(1024 * 1024 * Long.parseLong(sizeLimit));
				
				// 获得请求中的文件列表
				List<FileItem> files = fileUpload.parseRequest(request);
				System.out.println(files.size());
				// 获得迭代器
				Iterator<FileItem> iterator = files.iterator();
				while (iterator.hasNext()) {
					FileItem item = iterator.next();
					if (!item.isFormField()) {
						String imgName = item.getName(); // 获得图片名称,此文件名包括路径
						double fileSize = item.getSize();
						double size = fileSize / 1024;
						DecimalFormat df = new DecimalFormat("########.00 ");
						String   imgSize= df.format(size);//获取图片大小 
						if (imgName.lastIndexOf(".") >= 0) {
							extName = imgName.substring(imgName.lastIndexOf(".")); // 获得文件的扩展名
						}
						System.out.println(imgName);
						returnStr.set(imgName);
						newFileName = ranFileName + extName; // 文件重新命名
						File fileupload = new File(savePath + newFileName);// 生成抽象文件
						item.write(fileupload); // 上传图片到uploadImg文件夹
					

						/**
						 * 这里可以将上传附件信息添加到数据
						 */
					
					}
				}
			} catch (FileUploadException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			 try {
						out = response.getWriter();
						out.print("【"+returnStr.get()+"】" + "上传成功!");
						out.flush();
						out.close();
					
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
		
		return null;
	}
	/**
	 *  获得项目的根路径
	 * @param request
	 * @return
	 */
	private String getAbsoluteBasePath(HttpServletRequest request) {
		return request.getSession().getServletContext().getRealPath("/");
	}

	/**
	 *  生成随机文件名:当前年月日时分秒+五位随机数
	 * @return
	 */
	private String getRandomFileName() {
		//SimpleDateFormat sDateFormat;
		Random r = new Random();
		int rannum = (int) (r.nextDouble() * (99999 - 10000 + 1)) + 10000; // 获取随机数
		//sDateFormat = new SimpleDateFormat("yyyyMMdd"); // 时间格式化的格式
		return rannum+""; // 当前时间
	}
}
最近下载更多
13856120525  LV1 2023年2月17日
yymmdm  LV6 2022年8月30日
sl0018  LV13 2022年6月13日
Mayoubin2001  LV21 2022年3月26日
zhjwgs  LV15 2022年2月22日
17798830  LV14 2022年1月25日
czr2233  LV9 2021年9月14日
huaua7676  LV30 2021年7月28日
明123456  LV11 2021年5月27日
dongzhan  LV12 2021年3月3日
最近浏览更多
uni-code_0123  LV1 2023年11月29日
微信网友_6755417394941952 2023年11月28日
暂无贡献等级
13856120525  LV1 2023年2月17日
慵懒的小橘猫  LV11 2022年11月16日
8战魂5无双8  LV43 2022年9月13日
yymmdm  LV6 2022年8月30日
sl0018  LV13 2022年6月12日
1635162218  LV9 2022年5月31日
qwer765  LV1 2022年5月11日
qwerasdf123456  LV2 2022年4月24日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友