5、WEB开发由浅入深系列BLOG-5(Servlet实现简单文件上传)

本文介绍如何使用Servlet实现文件上传功能,包括客户端表单设置与服务器端处理流程。客户端需配置特定的MIME类型以便发送文件数据,服务器端则利用commons-fileupload组件解析请求并保存文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Servlet实现文件的上传

<!-- 上传文件不能够像提交文本信息一样,因为上传文件用到的是2进制的上传方式,所以要设置enctype="multipart/form-data"
    	而且在服务器端也要引入commons-fileupload.jar文件,-->

客户端:
<form action="/ServletTest/servlet/UploadFile.jsp" method="post" enctype="multipart/form-data">    	 
    		<div align="center">
    			<fieldset style="width:80%;">
    				<legend>上传文件的案例</legend><br/>
    				<div>
    					<div align="left">上传文件</div>
    					<div align="right">
    						<input type="file" name="file1">
    					</div>
    				</div>
    				<div>
    					<input type="submit" name="sub" value="提 交">
    				</div>
    			</fieldset>
    		</div>
    	</form>


服务器端:
//声明一个file
		File file = null;
		//声明解析request的对象,来源于commons-fileupload.jar包中
		DiskFileUpload diskFileUpload = new DiskFileUpload();
		try {
			//解析reqeust对象
			List<FileItem> list = diskFileUpload.parseRequest(request);
			//由于只是上传了一个文件,在此就不遍历了
			FileItem f = list.get(0);
			//,得到文件名
			String filename = new String(f.getName().getBytes(),"utf-8");
			//赋值文件,注意后面的123.jpg,在这里我是写死的。在实际情况中用filename即可
			file = new File(this.getServletContext().getRealPath("attachment"),"123.jpg");
			//创建文件夹
			file.getParentFile().mkdir(); 
			//创建新文件
			file.createNewFile();		
			//得到文件的输入流
			InputStream is = f.getInputStream();
			//得到文件输出流
			OutputStream os = new FileOutputStream(file);
			//字节缓存
			byte[] bys = new byte[1024]; 
			//真正的文件长度
			int len = 0;
			//将文件流写入到指定的文件中
			while((len = is.read(bys)) > -1){
				os.write(bys, 0, len);
			}
			System.out.println("已经保存文件到:"+file.getAbsolutePath());

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值