java学习笔记-JavaWeb篇四

86 文件上传基础

87 使用 fileupload 组件

88 文件上传案例_需求

89 文件上传案例_JS代码

90 文件上传案例_约束的可配置性

91 文件上传案例_总体步骤分析

92 文件上传案例_构建 FileUploadBean 集合

93 文件上传案例_完成文件的上传

94 文件上传案例_复习

95 文件上传案例_校验及小结

96 文件下载

97 国际化之Locale

98 国际化之DateFormat

99 国际化之NumberFormat

100 国际化之MessageFormat

101 国际化之ResourceBundle

102 国际化之 fmt 标签及小结

86 文件上传基础

 1. 进行文件上传时,表单需要做的准备:

1) 请求方式为post:<form action="uploadServlet" method="post" ...>

2) 使用file的表单域:<input type="file" name="file">

3) 使用multipart/form-data的请求编码方式:<form action="uploadServlet" method="post" enctype="multipart/form-data">

<form action="uploadServlet" method="post" enctype="multipart/form-data">
上传文件:<input type="file" name="file">
<input type="submit" value="submit">
</form>

4) 关于enctype:

 > application/x-www-form-urlencoded:表单enctype 属性的默认值。这种编码方案使用有限的字符集,当使用了非字母和数字时,必须用“%HH”(H代表十六进制数字)。对于大容量的二进制数据或包含非ASCII字符的文本来说,这种编码不能满足要求

 > multipart/form-data:form设定了enctype="multipart/form-data"属性后,表示表单以二进制传输数据

2. 服务端:

1)不能再使用request.getParameter()等方式获取请求信息。获取不到,因为请求的编码方式已经改为multipart/form-data,以二进制的方式来提交请求信息

2)可以使用输入流的方式来获取,但不建议这样做

@WebServlet("/uploadServlet")
public class UploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        InputStream in = request.getInputStream();
        Reader reader = new InputStreamReader(in);
        BufferedReader bufferedReader = new BufferedReader(reader);
        
        String str = null;
        while((str = bufferedReader.readLine()) != null){
            System.out.println(str);
        }
    }

}
输入流这样处理

3)具体使用commons-fileupload组件来完成文件的上传操作

87 使用 fileupload 组件

I. 搭建环境:加入

commons-io-2.0.jar

commons-fileupload-1.2.2.jar

II. 基本思想:

  > commons-fileupload 可以解析请求,得到1个FileItem对象组成的list

  > commons-fileupload 把所有的请求信息都解析为FileItem对象,无论是一个一般的文本域还是一个文件于

  > 可以调用FileItem 的isFormField() 方法来判断是一个表单域 或不是表单域(则是一个文件域)

  > 再来进一步获取信息

// Process a regular form field
if (item.isFormField()) {
    String name = item.getFieldName();
    String value = item.getString();
    ...
}
// Process a file upload
if (!item.isFormField()) {
    String fieldName = item.getFieldName();
    String fileName = item.getName();
    String contentType = item.getContentType();
    boolean isInMemory = item.isInMemory();
    long sizeInBytes = item.getSize();
    ...
}

InputStream uploadedStream = item.getInputStream();
    ...
uploadedStream.close();
 

88 文件上传案例_需求

89 文件上传案例_JS代码

90 文件上传案例_约束的可配置性

91 文件上传案例_总体步骤分析

92 文件上传案例_构建 FileUploadBean 集合

93 文件上传案例_完成文件的上传

94 文件上传案例_复习

95 文件上传案例_校验及小结

96 文件下载

97 国际化之Locale

98 国际化之DateFormat

99 国际化之NumberFormat

100 国际化之MessageFormat

101 国际化之ResourceBundle

102 国际化之 ft 标签及小结

原文地址:https://www.cnblogs.com/hnini/p/5748210.html