# UploadFileDemo **Repository Path**: whitesodaHGF/UploadFileDemo ## Basic Information - **Project Name**: UploadFileDemo - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-03-08 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java EE项目中利用Servlet 3.0 API上传文件 #### 本项目是在Java EE项目中利用第三方插件UserAgentUtils获取浏览器和操作系统信息。 ### 一、API说明 Servlet 3.0 API提供了上传文件的功能,而且使用非常简单。 HttpServletRequest 提供了两个方法用于从请求中解析出上传的文件: Part getPart(String name) Collection getParts() 前者用于获取请求中给定 name 的文件,后者用于获取所有的文件。每一个文件用一个 javax.servlet.http.Part 对象来表示。该接口提供了处理文件的简易方法,比如 write()、delete() 等。 结合 HttpServletRequest 和 Part 来保存上传的文件变得非常简单。 ### 二、项目简介 本项目写了两个Servlet,分别实现了单个文件上传与多文件上传时的Servlet的处理逻辑流程。 ### 三、运行本项目 本项目配置了jetty maven插件和tomcat8 maven插件,可以使用他们之一运行项目。 1. cd 项目的根目录 或 idea开发工具中 双击ctrl键,然后在弹出容器中输入下面的命令 2. mvn jetty:run 3. 在浏览器中输入地址:http://localhost:8080/test/upload.html,或http://localhost:8080/test/multiupload.html 4. pom.xml文件里有详细的注释说明如果配置Maven。 ### 四、使用curl命令测试上传文件的Servlet #### 格式: ```bash curl --form 或 或 -f 或 -F "参数名=@文件路径" 服务器上传文件Servlet接口 ``` 使用 -F (--form) 来上传文件,这样才会给请求添加 enctype="multipart/form-data" 参数。 参考: https://www.gonever.com/post/45 http://www.ruanyifeng.com/blog/2011/09/curl.html #### 上传文件curl命令例子: ```bash curl -v -F "file=@uao.sh" http://localhost:8080/test/upload curl -v -F "image=@/home/petehouston/hello.txt" -F "name=黎志雄" -F "phone=123456789" http://localhost:8080/test/multiupload ``` #### post数据字段到后端Servlet例子: ```bash curl http://localhost:8080/test/ -d "phone=123456789&name=Sai" ``` ### 五、作业 写一个前端页面和一个Servlet,能识别前端form表单提交的数据,提交的数据包括text、file组件。 #### 要求:能正确识别文本,中文不乱码,并可以把上传文件写入本地服务器。