您的位置:首页 > 其它

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

2012-04-09 21:14 501 查看
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());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: