sinat_27677769 2016-06-11 07:43 采纳率: 100%
浏览 1403
已采纳

在jsp页面上写了一个上传图片的表单,在servlet中接收为啥只得到了文件名

servlet 里用ServletInputStream接收,
request.setCharacterEncoding("UTF-8");

    ServletInputStream sin = request.getInputStream();
    PrintWriter out=response.getWriter();

    byte[] buffer = new byte[1024 * 8];
    int length = 0, row = 0;
    String mark = "";
    String filename = "";
    while ((length = sin.readLine(buffer, 0, buffer.length)) > 0) {
        String s = new String(buffer, 0, length, "UTF-8");
        out.println("length:"+length + "    " + s + "<br/>");
        if (row == 0)
            mark = s.trim();
        else if (s.indexOf("filename=") > 0) {
            int end = s.lastIndexOf("\"");
            int start = s.substring(0, end).lastIndexOf("\"");
            filename = s.substring(start + 1, end);
        } else if ("".equals(s.trim()))
            break;
        row ++;
    }

    out.println("filename:    " + filename + "<br>");
    filename = request.getRealPath("/") + filename;
    String _filename = "D:\\jboss-5.1.0.GA\\server\\default\\deploy\\test.jpg";
    out.println("||"+filename+"||");
    FileOutputStream fout = new FileOutputStream(_filename);
    while ((length = sin.readLine(buffer, 0, buffer.length)) > 0) {
        String s = new String(buffer, 0, length);
        if (s.startsWith(mark))
            break;
        fout.write(buffer, 0, length);
    }
    fout.flush();
    fout.close();
    File f = new File(filename);
    System.out.println(f.exists());
    System.out.println(f.getAbsolutePath());

  • 写回答

1条回答 默认 最新

  • lzj0327 2016-06-11 07:52
    关注
     http://www.cnblogs.com/goodwin/archive/2010/09/28/1837387.html 不使用readline试试
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥85 maple软件,solve求反函数,出现rootof怎么办?
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上