文件上传

文件上传

首先创建一个JSP页面,使用HTML标签来创建文件上传表单,要注意几点:

示例代码:

<h3>文件上传:</h3>
	选择要上传的文件:
	<br />
	<form action="/Synthesize/servlet/UploadServlet" method="post"
		enctype="multipart/form-data">
		<input type="file" name="file" size="50" /><br /> <input
			type="submit" value="上传文件" />
	</form>

然后写一个文件上传的方法,示例代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html;");
		response.setCharacterEncoding("UTF-8");// 设置编码格式

		// 创建一个解析器工厂
		DiskFileItemFactory factory = new DiskFileItemFactory();
		// 设置工厂的内存缓冲区大小,默认是10K
		// factory.setSizeThreshold(1024*1024);
		// 设置工厂的临时文件目录:当上传文件的大小大于缓冲区大小时,将使用临时文件目录缓存上传的文件
		factory.setRepository(new File("C:\\TEMP\\"));
		// 文件上传解析器
		ServletFileUpload upload = new ServletFileUpload(factory);
		// 设置所有上传数据的最大值,单位字节long 1M
		upload.setSizeMax(1024 * 1024);
		// 设置单个文件上传的最大值
		upload.setFileSizeMax(1024 * 1024);
		// 设置编码格式
		upload.setHeaderEncoding("UTF-8");

		try {
			// 解析请求,将表单中每个输入项封装成一个FileItem对象
			List<FileItem> itemList = upload.parseRequest(request);
			for (FileItem item : itemList) {
				// 判断输入的类型是 普通输入项 还是文件
				if (item.isFormField()) {
					// 普通输入项 ,得到input中的name属性的值
					String name = item.getFieldName();
					// 得到输入项中的值
					String value = item.getString("UTF-8");
					System.out.println("name=" + name + "  value=" + value);
				} else {
					// 上传的是文件,获得文件上传字段中的文件名
					// 注意IE或FireFox中获取的文件名是不一样的,IE中是绝对路径,FireFox中只是文件名。
					String fileName = item.getName();
					System.out.println(fileName);

					// 对IE中是绝对路径进行截取文件名
					if (fileName.indexOf("\\") != -1) {
						String[] str = fileName.split("\\\\");
						fileName = str[str.length - 1];
					}

					// 返回表单标签name属性的值
					String namede = item.getFieldName();
					System.out.println(namede);

					// 方法一:保存上传文件到指定的文件路径
					InputStream is = item.getInputStream();
					FileOutputStream fos = new FileOutputStream("F:\\tmp\\"
							+ fileName);
					byte[] buff = new byte[1024];
					int len = 0;
					while ((len = is.read(buff)) > 0) {
						fos.write(buff);
					}
					PrintWriter out = response.getWriter();
					out.write("上传成功!");
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

最后通过浏览器访问界面,并上传文件:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值