读书人

swfupload资料上传组件 服务端用servl

发布时间: 2013-10-13 14:03:53 作者: rapoo

swfupload文件上传组件 服务端用servlet配置教程

swfupload是个不错的上传组件,可以实现无刷新上传图片,并返回自己想要的数据,今天写了一个用java servlet来作为服务端接收客户端文件,自己在项目中也有使用,功能是实现远程上传文件并返回上传后在服务端的文件路径。

1,在官网下载swfupload,地址:http://demo.swfupload.org,

2,编写上传页面(这里的上传页面完全是从官网整过来的),并在下载的文件中找到以下html代码中的js文件并并入,(我下载的包中没有default.css文件,以下css也是我是官网copy过来的,里面用到一个按钮的样式,包括图片,如果不想自己写也可以先整过来),部分详情看页面注释的几个函数。

public class UploadImg extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {System.out.println("upload file begin");//接收参数StringBuffer path=new StringBuffer("/uploadfiles/");String user = request.getParameter("user");String product = request.getParameter("p");if(null == user){System.out.println("用户为空");return;}if(null == product){System.out.println("产品为空");return;}if(product.equals("x")){path.append("xiaoxuntong/"+user);}else{System.out.println("当前没有该产品");return;}String realpath = request.getSession().getServletContext().getRealPath(path.toString());System.out.println("_________path:"+realpath);List<FileEntity> fileList;fileList = (List)request.getAttribute("fileList");if(fileList==null)fileList = new ArrayList<FileEntity>();//接收上传文件String uploadSign = request.getParameter("upload");    uploadSign = "1";  //上传操作  if(null != uploadSign && !"".equals(uploadSign)){  FileItemFactory factory = new DiskFileItemFactory();  ServletFileUpload upload = new ServletFileUpload(factory);  //upload.setHeaderEncoding("UTF-8");  try{  List items = upload.parseRequest(request);  if(null != items){  Iterator itr = items.iterator();  int i = 0;  while(itr.hasNext()){  FileItem item = (FileItem)itr.next();  FileEntity file = new FileEntity();//  if(item.isFormField()){  continue;  }else{  //可修改上传后的文件命名格式  SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddkkmmss");//以当前精确到秒的日期为上传的文件的文件名  SimpleDateFormat sdd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  String type = item.getName().split("\\.")[1];//获取文件类型    System.out.println("文件名称:"+item.getName());  System.out.println("从GBK转到UTF-8输出:"+new String(item.getName().getBytes("GBK"),"UTF-8"));  String fileName=sdf.format(new Date())+"."+type;  File savedFile = new File(realpath,fileName);  File luFile = new File(realpath);  if(!luFile.exists())luFile.mkdirs();  //把文件放到列表中,在前台显示  System.out.println("服务器上对应的文件名称:"+sdf.format(new Date())+"."+type);  System.out.println("完整路径:"+realpath+"/"+sdf.format(new Date())+"."+type);  file.setId(sdf.format(new Date()));  file.setDate(sdd.format(new Date()));  file.setFilename(fileName);  file.setFilepath(realpath+"/"+sdf.format(new Date())+"."+type);  file.setFilesize(item.getSize()+"");  file.setFiletype(type);  file.setMark("0");  fileList.add(file);    item.write(savedFile);  }  }  }  }catch(Exception e){  e.printStackTrace();  }  }response.setContentType("text/html");response.setCharacterEncoding("UTF-8");PrintWriter out = response.getWriter();if(fileList!=null){for(int i=0;i<fileList.size();i++){FileEntity file = (FileEntity)fileList.get(i);                                                 //输出文件的绝对路径                                               out.println(request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/"+request.getContextPath()+path.toString()+"/"+file.getFilename());}}}

结束!

读书人网 >编程

热点推荐