JSP实现文件上传
使用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
package bean;
import java.io.*;
import javax.servlet.http.*;
public class UpFile
{
HttpServletRequest request;
HttpSession session;
String upFileMessage="";
public void setRequest(HttpServletRequest request)
{
this.request = request;
}
public void setSession(HttpSession session)
{
this.session = session;
}
public String getUpFileMessage()
{
String fileName = null;
try
{
String tempFileName = (String)session.getId(); //客户的session的id
File f1 = new File("F:\\workspace\\testUpLoadFile\\UpFiles", tempFileName);
FileOutputStream o = new FileOutputStream(f1);
InputStream in = request.getInputStream(); //获取请求的字节流
byte b[] =
相关文档:
HTTP 通信协议是客户与服务器之间一种提交(请求) 信息与响应信息
(request/respone)的通信协议。在JSP 中,内置对象request 封装了用户提交的信息,
那么该对象调用相应的方法可以获取封装的信息,即使用该对象可以获取用户提交的信
息。
客户通常使用HTML 表单向服务器的某个JSP 页面提交信息,表单的一般格式是: ......
<%@ page language="java" import="java.util.*" pageEncoding="GB2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>index</title>
<meta http-equiv="pragma" content="no-cache"&g ......
对于HTM网页,加入:
<meta HTTP-EQUIV="pragma" CONTENT="no-cache">
<meta HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<meta HTTP-EQUIV="expires" CONTENT="0">
然后,jsp页面中加入:
<%
response.setHeader("Cache-Control","no-store") ......
树节点组合模型
package cn.com.jsnh.model.catalog;
public class TreeModel {
private String node;
private CatalogModel model;
public String getNode() {
return node;
}
public void setNode(String node) {
this.node = node;
}
public CatalogModel getModel() {
return model;
}
public void setMo ......