| | | 在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 | | | 感谢
访问天极网,如果您觉得该文章涉及版权问题,请看这里!
|
|