jsp两种文件上传方式@MultipartConfig 注解方式及普通常规方式

下面两种上传方式均支持文字文件单选多选批量上传处理

jsp代码:

	<form id="uploadForm" enctype="multipart/form-data">
		用户名称:<input type="text" name="userName"><br> 
		头像文件:<input type="file" id="myfile" name="myfile" multiple="true"><br> 
		BlogURL: <input type="text" name="UserBlogUrl"><br> 
		<input type="button" value="上传" onclick="doSubmit();">
	</form>

servlet代码: 

后台接收文件方式一,该方式需要@MultipartConfig注解
后台接收文件方式二,该方式无需@MultipartConfig注解
		/**
		 * 后台接收文件方式一,该方式需要@MultipartConfig注解 多文件用getParts,单个文件参考上面用getPart("myfile") myfile为file框name属性,支持单选或多选批量上传
		 */
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("UTF-8");
		String savePath = request.getServletContext().getRealPath("/myFiles");
		Collection<Part> files = request.getParts();
		for (Part part : files) {
//			System.out.println("文件类型:" + part.getContentType());// MIME类型
//			System.out.println("文件大小:" + part.getSize());// 文件大小 字节
//			System.out.println("SubmittedFileName:" + part.getSubmittedFileName());
//			System.out.println("Name:" + part.getName());

			part.write(savePath + "/" + part.getSubmittedFileName());
			response.getWriter().print("文件上传成功!");
		}


	    /**
	     * 后台接收文件方式二,该方式无需@MultipartConfig注解 支持单个或多选批量上传
	     */
	        request.setCharacterEncoding("utf-8");
	        response.setCharacterEncoding("UTF-8");
	        String savePath = request.getServletContext().getRealPath("/myFiles");
	        DiskFileItemFactory factory = new DiskFileItemFactory();
	        ServletFileUpload upload = new ServletFileUpload(factory);
	        try {
	            List<FileItem> items = upload.parseRequest(new ServletRequestContext(request));
	            for (FileItem item : items) {
	                if (!item.isFormField()) {
	                    // System.out.println("savePath = " + savePath);
	                    // System.out.println(item.getName());
	                    // System.out.println(item.getFieldName());
	                    item.write(new File(savePath + "/" + item.getName()));
	                }
	            }
	        } catch (Exception e) {
	            e.printStackTrace();
	        }

 

posted @ 2022-10-04 00:14  IT情深  阅读(330)  评论(0编辑  收藏  举报