1. 程式人生 > >從request中獲取當前請求中的檔案列表

從request中獲取當前請求中的檔案列表

/**
	 * 獲取當前請求中的檔案列表
	 * 
	 * @param request
	 * @return
	 */
	protected List<MultipartFile> getMultipartFileList(
			HttpServletRequest request) {
		List<MultipartFile> files = new ArrayList<MultipartFile>();
		try {
			CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
					request.getSession().getServletContext());
			if (request instanceof MultipartHttpServletRequest) {
				// 將request變成多部分request
				MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
				Iterator<String> iter = multiRequest.getFileNames();
				// 檢查form中是否有enctype="multipart/form-data"
				if (multipartResolver.isMultipart(request) && iter.hasNext()) {
					// 獲取multiRequest 中所有的檔名
					while (iter.hasNext()) {
						// 一次遍歷所有檔案
						// MultipartFile file =
						// multiRequest.getFile(iter.next().toString());
						// if (file != null) {
						// files.add(file);
						// }
						// 適配名字重複的檔案
						List<MultipartFile> fileRows = multiRequest
								.getFiles(iter.next().toString());
						if (fileRows != null && fileRows.size() != 0) {
							for (MultipartFile file : fileRows) {
								if (file != null && !file.isEmpty()) {
									files.add(file);
								}
							}
						}
					}
				}
			}
		} catch (Exception ex) {
			log.error("解析MultipartRequest錯誤", ex);
		}
		return files;
	}