前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java文件上传-Apache Commons FileUpload工具包极速入门案例

Java文件上传-Apache Commons FileUpload工具包极速入门案例

作者头像
青山师
发布2023-05-05 19:50:22
2270
发布2023-05-05 19:50:22
举报
  • 文件上传的要求
    • form表单属性enctype=“multipart/form-data”
  • 后台使用 HttpServletRequest的getInputStream()方法可以得到撒谎那个村的数据信息,但是需要自行解析流…比较麻烦。而Apache Commons FileUpload工具包对此操作进行了相应的封装,可以直接拿来使用
  • Apache Commons FileUpload使用步骤
    • 创建磁盘文件项工厂对象 DiskFileItemFactory
    • 创建一个ServletFileUpload
    • 解析request
    • 然后保存文件

以下是一个极简的案例:

  • 页面 upload.jsp
代码语言:javascript
复制
<form action="upload" method="post" enctype="multipart/form-data">
    <input type="text" name="desc"><br>
    <input type="file" name="file"><br>
    <input type="submit">
</form>
  • 简单的后台代码
代码语言:javascript
复制
@WebServlet("/upload")
public class FileServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 创建磁盘文件项工厂
        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();

        // 创建一个ServletFileUpload
        ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);

        // 解析request
        try {
            List<FileItem> fileItems = servletFileUpload.parseRequest(request);

            for (FileItem fileItem : fileItems) {
                if (fileItem.isFormField()) {
                    // 是否为表单输入项
                    String name = fileItem.getFieldName();
                    String value = fileItem.getString();
                    System.out.println("name:" + name + "----value:" + value);
                }else{
                    // 文件
                    // 拿到upload目录代表的File对象
                    File uploadedFile = new File(getServletContext().getRealPath("/upload"));

                    // 目录不存在则先创建一下
                    if (!uploadedFile.exists()) {
                        uploadedFile.mkdirs();
                    }

                    // 创建一个用来保存文件的File对象:在upload目录下使用原始文件名保存
                    // 比如上传的是 a.txt 则保存到 upload目录也是 a.txt(也可以取随机名,自行根据业务操作即可)
                    File file = new File(uploadedFile, fileItem.getName());
					// 写入文件
                    fileItem.write(file);
                }

            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

其实Apache Commons FileUpload工具包还是有些复杂,步骤较多,有一些其他框架比如struts、springmvc都对其进行了封装,可以简化开发步骤。有兴趣的话可以自行查阅官网资料进行学习。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档