使用commons-fileupload进行上传

须要使用的包

这两个包在Apache官网上能够下载得到

commons-fileupload-1.3.1.jar是Apache的一个开源项目。废话不说直接说吧

前段页面

<form action="GetData" method="post" enctype="multipart/form-data">
			输入网址或者文字:<input type="text" value="" name="text" /><br /> <input
				type="file" value="上传" name="update" /> <br /> <input type="submit"
				value="生成" id="bu" />
		</form>

注意 须要加上 

enctype="multipart/form-data"

使用的是servlet

// 得到上传文件的保存文件夹,将上传的文件存放于WEB-INF文件夹下。不同意外界直接訪问,保证上传文件的安全
		String savePath = this.getServletContext().getRealPath("/upload");
		File file = new File(savePath);
		// 推断上传文件的保存文件夹是否存在
		if (!file.exists() && !file.isDirectory()) {
			//文件夹不存在,须要创建");
			file.mkdir();// 创建文件夹
		}
		try {
			// 使用Apache文件上传组件处理文件上传步骤:
			// 1、创建一个DiskFileItemFactory工厂
			DiskFileItemFactory factory = new DiskFileItemFactory();
			// 2、创建一个文件上传解析器
			ServletFileUpload upload = new ServletFileUpload(factory);
			// 解决上传文件名称的中文乱码
			upload.setHeaderEncoding("UTF-8");
			// 3、推断提交上来的数据是否是上传表单的数据
			if (!ServletFileUpload.isMultipartContent(request)) {
				return;
			}
			// 4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每个FileItem相应一个Form表单的输入项
			List<FileItem> list = upload.parseRequest(request);	
			String value = null;
			String filename = null ;
			for (FileItem item : list) {				
				// 假设fileitem中封装的是普通输入项的数据
				if (item.isFormField()) {
					// 解决普通输入项的数据的中文乱码问题
					value = item.getString("UTF-8");
				
				} else {// 假设fileitem中封装的是上传文件
						// 得到上传的文件名称称。
					filename = item.getName();
					if (filename == null || filename.trim().equals("")) {
						continue;
					}
					filename = filename.substring(filename.lastIndexOf("\\") + 1);
					// 获取item中的上传文件的输入流
					InputStream in = item.getInputStream();
					// 创建一个文件输出流
					FileOutputStream out = new FileOutputStream(savePath + "\\" + filename);
					// 创建一个缓冲区
					byte buffer[] = new byte[1024];
					// 推断输入流中的数据是否已经读完的标识
					int len = 0;
					// 循环将输入流读入到缓冲区其中,(len=in.read(buffer))>0就表示in里面还有数据
					while ((len = in.read(buffer)) > 0) {
						// 使用FileOutputStream输出流将缓冲区的数据写入到指定的文件夹(savePath + "\\"+ filename)其中
						out.write(buffer, 0, len);
					}
					// 关闭输入流
					in.close();
					// 关闭输出流
					out.close();
					// 删除处理文件上传时生成的暂时文件
					item.delete();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
有凝视。基本就这样 欧克了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值