RandomAccessFile类提供的功能来实现文件上传。当我们想对一个文件进行读写操作时,可以创建一个指向该文件的RandomAccessFile流即可,这样既可以从这个流中读取这个文件的数据,也通过这个流写入数据给这个文件。
利用JavaBean负责将用户选择的文件上传到服务器。bean可以让内置对象request调用方法getInputStream()获得一个输入流,通过这个输入流读入客户上传的全部信息,包括文件的内容以及表单域的信息。bean可以从上传的全部信息中分离出文件的内容,并保存在服务器端。按照HTTP协议,文件表单提交的信息中,前4行和后5行市表单本身的信息,中间部分才是客户提交的文件的内容。bean通过使用RandomAccessFile流获取文件的内容,即去掉表单的信息。首先,bean将客户提交的全部信息保存为一个临时文件,该文件的名字是客户的session对象的id(不同客户的这个id是不同的),然后读取该临时文件的第2行,这一行中含有客户上传的文件的文字,获取这个名字,再获取第4行结束的位置,以及倒数第6行的结束位置,因为这两个位置之间的内容是上传文件的内容,然后将这部分内容存入文件,该文件的名字和客户上传的文件的名字保持一致。最后删除临时文件。
JSP页面中:
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="boy" size="45"><br>
<input type="submit" name="g" value="提交">
</form>
这样选择文件提交后request就会有文件流信息。
UpFile.java
index.jsp