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[] =
相关文档:
JSP/Servlet的编码原理
关键字: jsp, servlet编码
首先,说说 JSP/Servlet 中的几个编码的作用
在 JSP/Servlet 中主要有以下几种设置编码的方式:
pageEncoding ="UTF-8"
contentType = "text/html;charset=UTF-8"
request.setCharacterEncoding("UTF-8")
response.setCharacterEncodin ......
JSP中可能会碰到的问题解答
来源:不详 作者:佚名 更新时间: 2009年07月02日 点击:
JSP中可能会碰到的问题解答
1、如何混合使用Jsp和SSI #include?
在JSP中可以使用如下方式包含纯HTML:
< !--#include file="data.inc"-- >
但是如果data.inc中包含JSP CODE ,我们可以使用:
< %@include file= ......
对于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") ......
<%@ page language="java" import="kg.TestBean2;" %>
<%@ page contentType="text/html;charset=gb2312" %>
<html>
<head>
<title>HelloBean</title>
</head>
<body>
<%--
<%
kg.TestBean2 testbean=(kg.TestBean2)session.setAttribute("testbean");
if ......
以前有提到过乱码问题,最近在使用window.open时又出现此类问题,现解决如下:
1:使用encodeURIComponent函数对参数进行处理,例如:window.open("html.jsp?name=" + encodeUrlComponent(value)));
2:修改tomcat服务器的server.xml文件添加:useBodyEncodingForURI="true"或者
URIEncoding=" ......