首页产品库评测行情新闻|手机数码笔记本台式机DIY硬件数字家庭数码相机办公外设|软件下载游戏开发|社区

更多

数码相机
MP4
LCD
机箱
音箱

天极网 > 软件频道>在JSP中操作文件

在JSP中操作文件

2002-04-23 17:37作者:出处:Yesky责任编辑:


  六、目录结构:

  (1) jsp文件和txt文件同一个目录
  (2) Java文件是servlet目录下

  七、测试:

  http://[server:port]/dir/index.jsp
  对文本文件的操作,其实以前的例子已经讲的很清楚了,之所以还要介绍该例,是想让读者了解JSP中文件操作的功能,可以结合其他技术,像该例中jpeg图片的自动生成,来实现更为强大的功能。对你有所启发吗?

  如何实现文件上传功能?
  文件上传,相信很多读者都比较熟悉了,用E-Mail给同学、朋友寄张近照,以表问候,这时就得用到此项功能。那么文件是如何传到服务器上的呢?看了下面的例子,相信读者会找到答案。
  基本原理:使用ServletRequest类的getInputStream()方法获得一个客户端向服务器端发出的数据流,然后处理这个数据流,从中分析、得到文件上载中传递到服务器的各个参数和数据,然后将其中的文件数据存储为一个文件,这样就实现了文件上载的功能。
  由于代码太长,我们将它放在了配套光盘上,详细内容请见UploadServlet.Java。下面我们就来分析一下该代码。
  // MAX_SIZE用来定义上传文件的最大长度。
  static final int MAX_SIZE = 102400;
  //rootPath用于存放根路径,successMessage用来存放成功信息
  String rootPath, successMessage;
  Init()方法用于初始化参数。最关键的部分是doPost()函数:

在获取数据流之前,首先确定数据流的内容类型是否为multipart/form-data:
if(contentType != null && contentType.indexOf("multipart/form-data") != -1)
{

}

  在内容类型确定为multipart/form-data后,接着就将数据流的内容读到临时缓冲区dataByte[]中:

in = new DataInputStream(request.getInputStream());
int formDataLength = request.getContentLength();
byte dataBytes[] = new byte[formDataLength];
while (totalBytesRead < formDataLength)
{
//check for maximum file size violation
  sizeCheck = totalBytesRead + in.available();
  if (sizeCheck > MAX_SIZE)
  {
    out.println("Sorry, file is too large to upload.");
    return;
  }
  bytesRead = in.read(dataBytes, totalBytesRead, formDataLength);
  totalBytesRead += bytesRead;
}

  下面的工作就是分析文件上载中传到服务器的各个参数和数据了。在该例中,程序分析了Directory、SuccessPage、OverWrite以及OverWritePage参数,这些参数在服务器生成最终文件时使用。最后程序将数据流中的文件内容输出到文件流中,生成文件。

fileOut = new FileOutputStream(fileName);
fileOut.write(file.getBytes(),0,file.length());
共6页。 9 1 2 3 4 5 6

关注此文的读者还看过:

返回软件频道首页

共6页。 上一页123456

软件频道最新更新

热点推荐

天极服务|关于我们|About us|网站律师|RSS订阅|友情合作|加入我们|天极动态|网站地图|意见反馈|MSN/QQ上看天极
Copyright (C) 1999-2012 Yesky.com, All Rights Reserved 版权所有 天极网络