您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 服务器端脚本编程 > JSP专辑 > 正文


-五彩屏保自己做
-Visual Basic 控件及技巧编程
-精通Photoshop的色彩调整
-Visual Basic 硬件与系统设计

在JSP中操作文件
2002-05-08· ·包路跃··Yesky

上一页  1 2 3 4 5 6  


  六、目录结构:

  (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());

上一页  1 2 3 4 5 6  

■ 相关内容
 JSP与Servlet
 如何在Linux下建立JSP开发环境?
 Tomcat环境的建立
 JSWDK环境的建立
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!