JSB 表单操作和txt文件上传

来源:互联网 发布:第三次工业革命 知乎 编辑:程序博客网 时间:2024/06/06 09:49
 
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格式。

原创粉丝点击