然后,我们用ServletInputStream对象的readLine方法读入HttpServletRequest对象内容的第一行: int i = in.readLine(line, 0, 128); 第一行应该是分界符,而且如果没有错误的话,它的长度应该大于3。如果它的长度小于3,我们可以认为出现了错误,doUpload方法应该立即返回: if (i < 3) return; 分界符和分界符的长度都非常重要,从本文后面你可以看到这一点。分界符由一组回车换行符结束,因此它的实际长度要比readLine方法返回的字节数少2。 int boundaryLength = i - 2; 丢弃byte数组line的最后2个回车换行符即可获得分界符: String boundary = new String(line, 0, boundaryLength); 接下来,fields域被实例化成Hashtable对象。这个Hashtable对象将用来保存HTML表单元素的名字/值对。 fields = new Hashtable(); 由于已经有了分界符,接下来我们就可以开始提取出表单元素的值。具体方法是用一个while循环按行读入HttpServletRequest对象的内容,直至遇到内容结束readLine方法返回-1为止。所有的表单元素都以分界符开始,后面跟上“Content-Disposition”行,这一行由下面这些字符开始: Content-Disposition: form-data; name= 表单元素有两种类型:文件,非文件(普通的表单元素,如TEXT或者HIDDEN元素)。这两种表单元素的区别在于文件元素包含字符串“filename="filename"”。由此,我们可以利用该信息把文件和非文件的表单输入元素区别开来,代码如下: if (newLine.startsWith("Content-Disposition: form-data; name=\"")) { if (newLine.indexOf("filename=\"") != -1) { // 文件型表单输入元素 // 这里加上提取文件的代码 . . . } else { // 普通表单输入元素 // 这里加上提取表单元素的代码 . . . } } |
正在阅读:用JavaBean实现文件上载(四)方法用JavaBean实现文件上载(四)方法
2004-02-14 09:34
出处:eNet学院
责任编辑:pjl
键盘也能翻页,试试“← →”键