【浏览器选择文件夹】springMVC上传篇

本文介绍了一种通过Chrome实现的功能,允许用户选择文件夹并上传该文件夹下的所有文件。提供了HTML代码片段及Java实现示例,便于开发者理解和应用。
前一段时间做项目,客户的需求是能选择文件夹,然后上传文件夹下的所有文件,当时找了好久,都没有找到,什么多文件上传插件啊,通通使用了一遍还是不行
偶然的一次查找中找到了一篇文章,是关于chrome的(目前也只支持chrome),代码如下
<form id="queryForm" name="queryForm" action="" method="post" enctype="multipart/form-data">
<input type='file' name="file" webkitdirectory >
<input type="submit" value="提交" />
</form>

有了这段代码就可以选择文件夹,从而选择其下所有文件了(只找文件,多重文件过滤,只取其内部文件)
下面是java代码
package com.cniia.ny.web.control.znfx;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
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.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;

import com.cniia.common.util.StrUtil;
import com.cniia.common.util.dao.PageList;
import com.cniia.ny.web.domain.User;
import com.cniia.ny.web.util.WebConst;
import com.cniia.ny.web.util.WebUtil;
import com.google.gson.JsonObject;


@Controller
public class TestFTP{

	/**
	 * 获取数据魔方信息
	 * @param req
	 * @author 袁洪军
	 * @throws IOException 
	 * @throws ServletException 
	 * @throws Exception 
	 * @date 2015.03.02
	 */
	@RequestMapping(value = "znfx/ftp")
	public ModelAndView queryDataCubeContent(HttpServletRequest req,HttpServletResponse res) {
		JsonObject js = WebUtil.getFormReq2Gson(req);
		
		
		@SuppressWarnings("deprecation")
		//String path = req.getRealPath("/upload");
		//你需要上传的路径
		String path = "D:/test";
		MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) req;
		 List<MultipartFile> files = multipartRequest.getFiles("file");
		 for (MultipartFile multipartFile : files) {
			 try {
				String fileName = multipartFile.getOriginalFilename();
				 OutputStream out = new FileOutputStream(new File(path,fileName));
				 InputStream in = multipartFile.getInputStream() ;
				 int length = 0 ;
					//定义每次读取用来临时保存数据的数组
					byte [] buf = new byte[1024] ;
					System.out.println("获取上传文件的总共的容量:"+multipartFile.getSize());
					// in.read(buf) 每次读到的数据存放在   buf 数组中
					while( (length = in.read(buf) ) != -1)
					{
						//在   buf 数组中 取出数据 写到 (输出流)磁盘上
						out.write(buf, 0, length);
					}
					//关闭输入流
					in.close();
					//关闭输出流
					out.close();
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		return new ModelAndView("/znfx/ftp");
	}
	
	
	
}

spring配置
<bean id="multipartResolver" 
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize" value="10000000000000000" />
	</bean>

ok,完毕,希望能帮助更多的人!
转载请注明出处,否则视为抄袭
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值