• java 简单实现上传 | commons-fileupload


    使用servlet来实现

    1. 配置pom.xml
            <dependency>
      	<groupId>commons-fileupload</groupId>
      	<artifactId>commons-fileupload</artifactId>
      	<version>1.3</version>
            </dependency>
          
    2. servlet
          protected void doPost(HttpServletRequest req, HttpServletResponse resp)
      			throws ServletException, IOException {
      	//创建一个文件处理工厂
      	FileItemFactory factory= new DiskFileItemFactory();
      
      	//创建一个存放临时中转的仓库
      	ServletContext servletContext = this.getServletConfig().getServletContext();
      	File repository = (File) servletContext.getAttribute("javax.servlet.context.temdir");
      	((DiskFileItemFactory) factory).setRepository(repository);
      		
      	//创建一个处理上传的处理器
      	ServletFileUpload upload = new ServletFileUpload(factory);
      	try {
      		//获取从表单提交上来的数据,从表单上传的数据会自动被分割,比如一个input:text,input:file,就会被分成两个item
      		List items = upload.parseRequest(req);
      		Iterator iter = items.iterator();
      		while (iter.hasNext()) {
      			FileItem item = iter.next();
      				
      			//检查是否是文件
      			if(item.isFormField()) {
      				//如果不是文件d
      				String name = item.getFieldName();
      				String value =item.getString();
      				System.out.println(name+":"+value);
      			}else {
      			    //如果是文件
      			    String fieldName = item.getFieldName();
      			    //这个fileName是上传文件名
      			    String fileName = item.getName();
      			    System.out.println(fieldName+":"+fileName);
      			    //新建一个文件,用于存储上传的文件
      			    File uploadFile = new File("D:\",fileName);
      			    item.write(uploadFile);
      			}
      		}
      	} catch (FileUploadException e) {
      		e.printStackTrace();
      	} catch (Exception e) {
      		e.printStackTrace();
      	}
         }
      
    3. 在web.xml中配置好servlet
    4. 前端页面
      <form action="/swfupload/fupload" enctype="multipart/form-data" method="post"></form>
       在这里,enctype的类型一定要是multipart/form-data,method要是post

    使用spring mvc controller来实现

    1. 大部分都是和上面的一样,而配置spring mvc可以在前面的博客找到
    2. 配置controller
      	@RequestMapping(value="/upload.do",method=RequestMethod.POST)
      	public void upload(HttpServletRequest request, HttpServletResponse response) {
      		//定义一个文件上传工厂,配置一些上传限制
      		DiskFileItemFactory factory = new DiskFileItemFactory();
      		factory.setRepository(new File("D:\"));
      		
      		//上传实现方法
      		ServletFileUpload upload = new ServletFileUpload(factory);
      		try {
      			//获取表彰提交
      			List items = upload.parseRequest(request);
      			Iterator iter = items.iterator();
      			while (iter.hasNext()) {
      				FileItem item = iter.next();
      				
      				if (item.isFormField()) {
      					//当不是文件的时候
      					String filedName = item.getFieldName();
      					String value = item.getString();
      					System.out.println(filedName + ":" + value);
      				} else {
      					//是文件的时候
      					String fileName = item.getName();
      					String path = ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/");
      					System.out.println(path);
      					//新建一个文件,并以上传文件名为文件名
      					File uploadFile = new File(path,fileName);
      					//保存上传文件
      					item.write(uploadFile);
      				}
      			}
      		} catch (FileUploadException e) {
      			e.printStackTrace();
      		} catch (Exception e) {
      			e.printStackTrace();
      		}
      	}
      
      @RequestMapping指定了访问的路径和访问的类型
    3. 前台页面
      <form action="/swfupload/upload.do" enctype="multipart/form-data" method="post">
      其实swfupload是项目名

    java 和 swfupload的结合

    其实swfupload只是负责前台的各种逻辑,而java后台的处理依然是沿用普通的上传代码,也就是java后台处理的代码和上面的是一个样,只是前台代码使用swfupload写,而代码在官方网站上的demo写得非常全了

  • 相关阅读:
    oracle数据库物理结构逻辑结构内存区块进程管理
    系统的数据库设计
    大数据和高并发的解决方案总结
    Asp.net+WebSocket+Emgucv实时人脸识别
    初识Docker
    变位词程序的实现
    分布式系统常见问题#转载
    六类排序算法的C#实现
    Asp.net MVC 中Controller返回值类型ActionResult
    将应用程序中的一些参数写到xml配置文件中
  • 原文地址:https://www.cnblogs.com/popping57/p/3258956.html
Copyright © 2020-2023  润新知