广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JavaWeb实现简单上传文件功能
  • 907
分享到

JavaWeb实现简单上传文件功能

2024-04-02 19:04:59 907人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

本文实例为大家分享了javaweb实现上传文件功能的具体代码,供大家参考,具体内容如下 基本思想:网站服务器的内部除了有WEB应用,还有文件系统,客户端向网站上传文件就是将文件以流的

本文实例为大家分享了javaweb实现上传文件功能的具体代码,供大家参考,具体内容如下

基本思想:网站服务器的内部除了有WEB应用,还有文件系统,客户端向网站上传文件就是将文件以流的形式传输给了服务器,如图所示:

注意事项:

1、为保证服务器的安全,上传的文件路径应放在外界不能直接访问的目录下,比如WEB-INF目录下。
2、因为服务器的文件系统大小有限,上传的文件大小必须要有限制。
3、为防止因为文件名重复而导致文件覆盖,应当给上传的文件夹生成唯一的标识,比如时间戳、UUID或者md5加密。
4、可以限制上传文件的类型,在收到文件的时候,判断文件后缀是否合法。

在JavaWeb中,一般我们使用ServletFileUpload类来处理上传的文件数据,它使用parseRequest方法将表单的每一个输入项封装成一个FileItem对象,并以list的形式返回,处理数据比较简短,方便。

下面是一个上传文件的小demo,编辑器是idea项目类型是Maven Webapp。

package com.xiaojing.servlet;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import javax.servlet.ServletException;
import javax.servlet.Http.httpservlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.List;
import java.util.UUID;

public class FileUploadServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //判断表单是普通表单,还是上传文件表单
        if(!ServletFileUpload.isMultipartContent(req)){
            return;
        }
        //创建上传文件的路径,一般放在/WEB-INF下,比较安全
        String uploadPath = this.getServletContext().getRealPath("/WEB-INF/upload");
        File uploadFile = new File(uploadPath);
        if(!uploadFile.exists()){
            uploadFile.mkdir();
        }
        //如果上传的文件大小超过了限制,那么会将这个文件放在临时文件夹,过段时间提醒用户删除或者转为永久
        String tempPath = this.getServletContext().getRealPath("/WEB-INF/temp");
        File tempFile = new File(tempPath);
        if(!tempFile.exists()){
            tempFile.mkdir();
        }

        //1、创建DiskFileItemFactory对象
        DiskFileItemFactory factory = new DiskFileItemFactory();
        //2、获取ServletFileUpload对象
        ServletFileUpload upload = new ServletFileUpload();
        upload.setFileItemFactory(factory);
        //3、处理上传文件
            //将前端请求封装成Fileitem对象,每一个表单输入项都是一个Fileitem对象
        try {
            List<FileItem> items = upload.parseRequest(req);
            for (FileItem item: items) {
                if(item.isFORMField()){ //如果是普通的表单
                    //getFieldName()是input的name属性,getString()是input的value属性
                    String fieldName = item.getFieldName();
                    String value = item.getString("UTF-8");
                    System.out.println(fieldName + ":" +value);
                }else{  //上传文件的表单
                    //---------------处理文件------------------//
                    String uploadFileName = item.getName();
                    System.out.println("上传的文件名:"+uploadFileName);
                    if(uploadFileName == null || uploadFileName.trim().equals("")){
                        continue;
                    }
                    //获取fileName文件名,uploadFileName一般是url/文件路径/文件
                    String fileName = uploadFileName.substring(uploadFileName.lastIndexOf("\\")+1);
                    //获取文件后缀
                    String fileExt = uploadFileName.substring(uploadFileName.lastIndexOf(".")+1);
                    System.out.println("文件信息:"+fileName);

                    //---------------处理地址-----------------//
                    //使用UUID唯一标识存放文件夹
                    String uuidPath = UUID.randomUUID().toString();
                    //获取真实的文件夹地址
                    String realPath = uploadPath + "/" + uuidPath;
                    File realFile = new File(realPath);
                    if(!realFile.exists()){
                        realFile.mkdir();
                    }

                    //---------------处理文件流-----------------//
                    //获取文件上传的流
                    InputStream inputStream = item.getInputStream();
                    //创建一个文件输出流
                    FileOutputStream outputStream = new FileOutputStream(realFile + "/" + fileName);
                    //创建一个缓冲区
                    byte[] buffer = new byte[1024 * 1024];
                    int len = 0;
                    while((len = inputStream.read(buffer)) > 0){ //每次读写1M
                        outputStream.write(buffer,0,len);
                    }
                    outputStream.close();
                    inputStream.close();

                    String msg = "文件上传成功";
                    System.out.println("文件上传成功");
                    //清除临时文件
                    item.delete();
                    //转发
                    req.setAttribute("msg",msg);
                    req.getRequestDispatcher("index.jsp").forward(req,resp);

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

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: JavaWeb实现简单上传文件功能

本文链接: https://www.lsjlt.com/news/152291.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JavaWeb实现简单上传文件功能
    本文实例为大家分享了JavaWeb实现上传文件功能的具体代码,供大家参考,具体内容如下 基本思想:网站服务器的内部除了有Web应用,还有文件系统,客户端向网站上传文件就是将文件以流的...
    99+
    2022-11-13
  • JavaWeb实现简单文件上传功能
    本文实例为大家分享了JavaWeb实现简单文件上传的具体代码,供大家参考,具体内容如下 1.概述 通常浏览器上传的所有参数,我们可以通过request对象的getParameter ...
    99+
    2022-11-13
  • JavaWeb怎么实现简单上传文件功能
    这篇文章主要介绍了JavaWeb怎么实现简单上传文件功能的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaWeb怎么实现简单上传文件功能文章都会有所收获,下面我们一起来看看吧。基本思想:网站服务器的内部除了...
    99+
    2023-07-02
  • JavaWeb怎么实现简单文件上传功能
    这篇文章主要讲解了“JavaWeb怎么实现简单文件上传功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaWeb怎么实现简单文件上传功能”吧!1.概述通常浏览器上传的所有参数,我们可以...
    99+
    2023-07-02
  • javaWeb实现简单文件上传
    本文实例为大家分享了javaWeb实现简单文件上传的具体代码,供大家参考,具体内容如下 1.先导入两个包:commons-fileupload-1.3.3.jar,commons-i...
    99+
    2022-11-13
  • javaweb实现文件上传功能
    本文实例为大家分享了javaweb实现文件上传的具体代码,供大家参考,具体内容如下 1、创建一个空项目 2、新建一个web application 的Module 3、创建一个lib...
    99+
    2022-11-13
  • JavaWeb实现上传文件功能
    本文实例为大家分享了JavaWeb实现上传文件的具体代码,供大家参考,具体内容如下 这是需要使用到的两个jar包一定要导入到lib目录中,并添加到发布的lib目录下 index.j...
    99+
    2022-11-13
  • JavaWeb 文件的上传和下载功能简单实现代码
    一、文件的上传和下载1、文件上传的原理分析     1、文件上传的必要前提:          a、提供for...
    99+
    2023-05-31
    java web 文件上传
  • javaweb实现文件上传小功能
    本文实例为大家分享了javaweb实现文件上传的具体代码,供大家参考,具体内容如下 1.创建文件上传页面 <%@ page contentType="text/html;cha...
    99+
    2022-11-13
  • Servlet实现简单文件上传功能
    本文实例为大家分享了Servlet文件上传的具体代码,供大家参考,具体内容如下两点要素: 表单提交方式必须是post 2.enctype一定要是multipart/form-data。 enctype的默认值是application/x-w...
    99+
    2023-05-30
    servlet 文件上传 实现简单
  • JavaWeb实现文件上传功能详解
    文件上传功能的实现 在大多数网站中,我们都可以看见文件上传和下载功能的实现,今天我们就文件上传做一个详细的总结 实现步骤: 1、新建一个JSP页面:表单必须设置:enctype=&...
    99+
    2022-11-13
  • JavaWeb如何实现上传文件功能
    本篇内容主要讲解“JavaWeb如何实现上传文件功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaWeb如何实现上传文件功能”吧!这是需要使用到的两个jar包一定要导入到lib目录中,并...
    99+
    2023-07-02
  • javaweb怎么实现文件上传功能
    本文小编为大家详细介绍“javaweb怎么实现文件上传功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“javaweb怎么实现文件上传功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。创建文件上传页面<%...
    99+
    2023-07-02
  • Spring Boot简单实现文件上传功能
    目录前言后端处理物理路径和虚拟路径映射前言 前端处理 通过form表单来上传文件提交方式为postenctype格式为"multipart/form-data"i...
    99+
    2022-11-13
  • nodejs如何实现简单的文件上传功能
    这篇文章主要为大家展示了“nodejs如何实现简单的文件上传功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“nodejs如何实现简单的文件上传功能”这篇文章吧。首先需要大家看一下目录结构,然后...
    99+
    2023-06-29
  • JavaWeb简单文件上传流程的实战记录
    目录引言前端上传文件后端接受文件总结 引言 这里实现一个简单的图片上传功能,主要是熟悉这个文件上传的交互流程。关于更复杂的文件上传,如大文件的切片上传、断点续传等,这里不做...
    99+
    2022-11-13
  • JavaWeb Servlet实现文件上传与下载功能实例
    目录前言项目准备文件上传前台页面文件下载资源准备超链接下载后台实现下载总结前言 在上网的时候我们常常遇到文件上传的情况,例如上传头像、上传资料等;当然除了上传,遇见下载的情况也很多,...
    99+
    2022-11-13
  • 简单实现nodejs上传功能
    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 npm install formidable var formidable = require('formidabl...
    99+
    2022-06-04
    上传 简单 功能
  • 利用javaweb如何实现一个文件上传功能
    利用javaweb如何实现一个文件上传功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。具体内容如下文件上传示例注意:jsp页面编码为"UTF-8"文件...
    99+
    2023-05-31
    javaweb 文件上传 ava
  • JavaWeb是如何实现文件上传和下载功能
    这篇文章将为大家详细讲解有关JavaWeb是如何实现文件上传和下载功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1. 文件传输原理及介绍2. JavaWeb文件上传2.1我们用一个新的方...
    99+
    2023-06-22
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作