2 u013031331 u013031331 于 2015.06.14 23:12 提问

jsp 用 RandomAccessFile上传文件 不知道哪儿有问题
jsp

package tom.jiafei;
import java.io.*;
import tom.jiafei.xinxi;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.sql.*;
public class Safe extends HttpServlet {

/**
 * Constructor of the object.
 */
public Safe() {
    super();
}

/**
 * Destruction of the servlet. <br>
 */
public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
}

/**
 * The doGet method of the servlet. <br>
 *
 * This method is called when a form has its tag value method equals to get.
 * 
 * @param request the request send by the client to the server
 * @param response the response send by the server to the client
 * @throws ServletException if an error occurred
 * @throws IOException if an error occurred
 */
public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out
            .println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
    out.println("<HTML>");
    out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    out.println("  <BODY>");
    out.print("    This is ");
    out.print(this.getClass());
    out.println(", using the GET method");
    out.println("  </BODY>");
    out.println("</HTML>");
    out.flush();
    out.close();
}

/**
 * The doPost method of the servlet. <br>
 *
 * This method is called when a form has its tag value method equals to post.
 * 
 * @param request the request send by the client to the server
 * @param response the response send by the server to the client
 * @throws ServletException if an error occurred
 * @throws IOException if an error occurred
 */
public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
      File a=new File("D:/ceshi/2/2.txt");
        FileOutputStream a1=new FileOutputStream(a);
        InputStream b1=request.getInputStream();
        byte v[]=new byte[20000];
        int n;
        while((n=b1.read(v))!=-1)
        a1.write(v, 0, n);
        a1.close();
        b1.close();
        String filename="t.txt";
        byte cc[]=filename.getBytes("ISO-8859-1");
        filename=new String(cc);
           File c1=new File("D:/ceshi/2/"+filename);
           RandomAccessFile randomwrite=new RandomAccessFile(c1,"rw");
        RandomAccessFile randomread=new RandomAccessFile(a,"r");
        int second=1;
        String secondLine=null;
        while(second<=2)
        {
        secondLine=randomread.readLine();
        second++;
        }

        randomread.seek(0);
        long four=0;
        int four1=1;
        while((n=randomread.readByte())!=-1&&(four1<=4))
        {
        if(n=='\n')
        {
        four=randomread.getFilePointer();
        four1++;
        }
        }
    randomread.seek(randomread.length());
    long end=randomread.getFilePointer();

    int j=1;
    while( (end>=0) && (j<6))  
        {
              end--;
    randomread.seek(end);
     n=randomread.readByte();

        if(n=='\n')
        {
        end=randomread.getFilePointer();
        j++;
        }
        randomread.seek(four);
        while(four<end-1)
        {
        n=randomread.readByte();
        randomwrite.write(n);
        four=randomread.getFilePointer();
        }
        randomread.close();
        randomwrite.close();



        }





/*  try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (Exception e) {
        // TODO: handle exception
    }
    Connection con;
    Statement sql = null;
    ResultSet rs = null;
    String uri="jdbc:mysql://localhost:3306/qwer?user=root&password=root&characterEncoding=gb2312";
    try {
        con=DriverManager.getConnection(uri);
        sql=con.createStatement();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

xinxi xinxi=new xinxi();
HttpSession session=request.getSession();
session.setAttribute("xinxi",xinxi);
String yonghuming=request.getParameter("yonghuming");
String mima=request.getParameter("mima");
String cha="";
int l=1;
String l1=request.getParameter("jieshou");
l=Integer.parseInt(l1);
String name="";
switch(l)
{
case 10:
{
name="xuesheng";
cha="insert into xuesheng values(3,'xc','xv')";
try {
sql.executeUpdate(cha);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
case 11:
{
name="xuesheng";
cha="update xuesheng set 姓名='123',学号='qwe'";
try {
sql.executeUpdate(cha);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
case 2:
{

    }
    case 3:
    {

    }
    }
    xinxi.setYonghuming(yonghuming);
    xinxi.setMima(mima);


    String ty="select * from jiaoshi";
    try {
    rs= sql.executeQuery(ty);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
RequestDispatcher dispatcher=request.getRequestDispatcher("ceshi.jsp");
dispatcher.forward(request, response);

PrintWriter out=response.getWriter();*/
/*try {
rs.next();

for(int i = 0;i<=rs.getRow();i++)
    out.println(rs.getString(i+1));

    sql.executeUpdate(cha);

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/

}

/**
 * Initialization of the servlet. <br>
 *
 * @throws ServletException if an error occurs
 */
public void init() throws ServletException {
    // Put your code here
}

}

3个回答

u013031331
u013031331   2015.06.14 23:15

也就是提取上传文件的第5行到倒数第6行的内容,我都按照书上的标准敲的代码,为什么上传的最后一句总是多一句这个
------WebKitFormBoundaryqrFPvEjtqVRR9SD7--
为什么啊

bulusli3
bulusli3   Ds   Rxr 2015.06.16 11:38

 “------webkitformboundary” 是safari 浏览器从客户端向服务器端传送HTML标签数据所使用的分隔符(一般会在分隔符后附加一串十六进制的数以示区别)。这里所指的HTML标签数据包括文本框、密码框、文件上传框......一般来说,这些网页元素都被嵌入于form表单,所以才称为:formboundary。

  客户端需要把网页数据打包成一个数据包发送给服务器,而组装的时候便是用分隔符把所有网页元素的标签数据分隔起来。服务器收到数据包后,先从数据包的头部固定位置寻找到分隔符字串,再据此拆分整个数据包并从中一一读取HTML的所有标签数据。

u013031331
u013031331 问题是怎么解决,我新发布了一个,精简了,希望帮忙看一下。
大约 3 年之前 回复
twfx1027
twfx1027   2015.06.16 15:02

这么多代码啊,能不能简化下 在提问呢

u013031331
u013031331 不好意思啊,我修改了一下
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java多线程复制文件,RandomAccessFile类
package com.wzh.mtd.t20151102; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; public class CopyThread implements Runnable{ private int block; p
Java RandomAccessFile文件操作详解
简介: RandomAccessFile类可以对文件随机访问的操作,访问包括读和写操作。该类的读写是基于指针的操作。 RandomAccessFile对文件进行随机访问操作时有两个模式,一种是只读(r),另一种是读写(rw),需在创建RandomAccessFile对象时传入一个参数进行设置,第一个参数代表要访问的文件,第二个参数代表设置访问模式 RandomAccessFile(File f
断点下载神器-RandomAccessFile
回顾在《即拿即用-Android单线程断点下载》下载的过程: 点击开始 开启一个网络连接获取文件长度 获取上一次下载进度 开启一个下载任务 ,起点是上一次的下载进度 每500毫秒发送一个广播通知界面更新进度 点击暂停的时候保存下载进度 在下载的时候,我们发现用RandomAccessFile替代了OutputStream,下面对比一下两者的使用区别:在普通的下载中使用的是OutputStr
Servlet+jsp文件上传及要注意的问题
文件上传要注意的问题: 1、非上传文件的乱码问题,此时通过request设置字符编码无效 2、上传文件的名字含有中文字符,会乱码 3、文件重名会覆盖 4、所有上传的文件要保存在不同的目录下面 5、可以设置文件上传的类型限制 6、可以设置文件上传大小 7、可以设置文件上传总量的大小 后面三个在代码中没有写,5,可以获取文件的后缀名,判断一下就行了,67 api更是有对应的方法
使用xUtils3和RandomAccessFile来实现文件的分片上传
首先,想使用xUtils3需要先做好相应的配置,这里就不详细说了,详细http://blog.csdn.net/a1002450926/article/details/50341173      在这里我自己封装了一个上传文件的方法,如下:       //文件上传     public static Cancelable UploadFile(String url,String json
jsp实现上传文件
用jsp实现的上传文件程序,大家互相学习,有问题随时交流
Java使用RandomAccessFile读写文件
[TOC] 转载自:http://blog.csdn.net/akon_vm/article/details/7429245Java RandomAccessFileRandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了。这些记录的大小不必相同;但是其大小和位置必须是可知的。但是该类仅限于操作文件。RandomAccessFile不
文件编码和RandomAccessFile文件流的使用--IO学习笔记(一)
文件编码UTF-8编码:中文占用3个字节,英文占用1个字节 GBK编码:中文占用2个字节,英文占用1个字节 UTF-16BE编码:中文占用2个字节,英文占用两个字节注意:其中UTF-16BE编码是java的双字节编码采用的编码方式。Java里使用的是UTF-16BE 方式来存储数据的。eg:String 字符串就是采用UTF-16BE编码。package com.test.test;/** *
RandomAccessFile读写文件字符
我本来写了个可以存入信息的地址簿,使用RandomAccessFile类来随机读写.当然可以使用GUI查看.反正说也说不清了.我就直接说下下面的一个测试程序来说明我的问题: Java code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1
java中java.io.RandomAccessFile的应用场景及使用实例
应用场景:  1、向10G文件末尾插入指定内容,或者向指定指针位置进行插入或者修改内容。   2、断点续传,使用seek()方法不断的更新下载资源的位置。简介:    Java中的RandomAccessFile提供了对文件的读写功能。RandomAccessFile 虽然属于java.io下的类,但它不是InputStream或者OutputStream的子类;它也不同于FileInputStr