JSB 表单操作和txt文件上传

 
upload.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
<title>上传文件</title>
</head>
<body>
	<form name="upload" action="upload.jsp"  enctype="multipart/form-data" method="post">
		用户名:<input type="text" name="UserName" value="" size="15"/><br>
		口令:<input type="password" name="Password" value="" size="15"/><br>
		选择上传文件<input type="file" name="FileName" value="" size="30"/><br>
		<input type="submit" value="提交"/>
	</form>
</body>
</html>


 html代码如上,其中 charset=GB2312,当为UTF-8时不能成功读取中文名字的txt文件名,但内容可以正常读取。有文件上传操作

所以 enctype采用multipart/form-data。方式。不写的情况下默认是application/x-www-form-urlencoded

 

下面为JSP代码

<%@page import="java.io.FileWriter"%>
<%@page import="java.io.BufferedWriter"%>
<%@page import="java.io.FileReader"%>
<%@page import="java.io.FileOutputStream"%>
<%@ page language="java" contentType="text/html; charset=gb2312"
    pageEncoding="gb2312"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>你上传的内容如下</title>
</head>
<body>
 	<%request.setCharacterEncoding("gb2312"); %>
	<%
	    ServletInputStream datain=request.getInputStream();
	    String file="E://javaEE//chapter03//uploaddata.txt";
	    FileWriter  data = new FileWriter(file);
	    BufferedWriter dataout = new BufferedWriter(data);
	    int n=datain.read();
	    byte []b=new byte[200];
	    String s;
	    int len;
	    while((len=datain.readLine(b, 0, 200))!=-1)
	    {
	    	s=new String(b,0,len);
	    	dataout.write(s);
	    	out.print(s);
	    	out.print("<br>");
	    }
	    dataout.flush();
	    datain.close();
	    dataout.close();
	    out.println("上传成功");
	%>
</body>
</html>


先通过流获取客户端的发来的数据ServletInputStream 流类型 利用readline操作,将一行保留到byte数组中,再有byte数组转换成String类型,再利用BufferedWriter

写入字符串,哈哈,自己想到的方法哦。编码格式为UTF-8 和 gb2312都能成功读取中文。但前提是txt文件需要是ansi格式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章