etmvc extjs 文件上传问题

diedpaladin 2013-01-10 03:30:31
用exmvc+Ext.ux.UploadDialog做文件上传功能
exmvc的MultipartRequest上传文件保存成功后发现有两个问题
1总是弹出文件下载的提示框
2后台无法返回success,状态一直是上传中。。。
...全文
148 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuzheng5201314 2013-06-26
  • 打赏
  • 举报
回复

package com.cms.servlet;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Iterator;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;

import com.cms.controllers.manage.ImagesController;
import com.cms.models.Images;
import com.cms.utils.ImageUtil;

@SuppressWarnings("serial")
public class Upload extends HttpServlet {
	@SuppressWarnings("unchecked")
	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		ImagesController imagesController = new ImagesController();
		Images images = new Images();
		images.setNewsid(Integer.parseInt(request.getParameter("id")));
		images.setTitle("");
		
		//构造上传文件全路径
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar cal = Calendar.getInstance();
		String appPath = request.getSession().getServletContext().getRealPath("/").replaceAll("\\\\", "\\\\\\\\");
		String path = "resource/"+"UserFiles/"+sdf.format(cal.getTime())+"/";
		File f = new File(appPath+path);
		if(!f.exists()){
			f.mkdirs();
		}
		
		String savePath = this.getServletConfig().getServletContext().getRealPath("");
		savePath = appPath+path;//savePath + "/uploads/"
		
		
		File f1 = new File(savePath);
		//System.out.println(savePath);
		if (!f1.exists()) {
			f1.mkdirs();
		}
		DiskFileItemFactory fac = new DiskFileItemFactory();
		ServletFileUpload upload = new ServletFileUpload(fac);
		upload.setHeaderEncoding("utf-8");
		List fileList = null;
		try {
			fileList = upload.parseRequest(request);
		} catch (FileUploadException ex) {
			return;
		}
		Iterator<FileItem> it = fileList.iterator();
		String name = "";
		String extName = "";
		int i=0;
		while (it.hasNext()) {
			i++;
			FileItem item = it.next();
			if (!item.isFormField()) {
				name = item.getName();
				//System.out.println("上传的文件有:"+item.getName());
				//long size = item.getSize();
				//String type = item.getContentType();
				//System.out.println(size + " " + type);
				if (name == null || name.trim().equals("")) {
					continue;
				}
				// 扩展名格式:
				if (name.lastIndexOf(".") >= 0) {
					extName = name.substring(name.lastIndexOf(".")).toLowerCase();
				}
				File file = null;
				do {
					// 生成文件名:
					name = System.currentTimeMillis()+"";
					file = new File(savePath + name + extName);
				} while (file.exists());
				File saveFile = file;new File(savePath + name + extName);
				try {
					item.write(saveFile);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		response.getWriter().print(name + extName);
	}

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧