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

javaWeb实现简单文件上传

2024-04-02 19:04:59 554人浏览 泡泡鱼

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

摘要

本文实例为大家分享了javaweb实现简单文件上传的具体代码,供大家参考,具体内容如下 1.先导入两个包:commons-fileupload-1.3.3.jar,commons-i

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

1.先导入两个包:commons-fileupload-1.3.3.jar,commons-io-2.6.jar。

2.前端页面代码

<fORM action="upLoadfile.do" method="post"
        enctype="multipart/form-data">
        <input type="text" name="username" /><br> 
        <input type="file" name="userimg" /><br> 
        <input type="submit" value="提交" />
</form>

2.Servlet代码

package com.uploadtest.upload;
 
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WEBServlet;
import javax.servlet.Http.httpservlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadBase;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
 

@WebServlet("/upLoadfile.do")
public class upLoadfile extends HttpServlet {
    private static final long serialVersionUID = 1L;
 
    
    public upLoadfile() {
        super();
        // TODO Auto-generated constructor stub
    }
 
    
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }
 
    
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String saveFileName = ""; //
        String oldFileName = ""; // 直接由item.getNam()获取的文件名,有可能获取的是路径,也为了避免重名覆盖,所以要对它进行处理
        String newFileName = ""; // 对源文件名进行处理后的名字
        // 借助工具解析commons-fileupload smartupload(在项目中导入了jar包)
        // 判断传递的是否是文件类型,判断form的enctype的属性值是否是multipart/form-data
        boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        if (isMultipart) {
            // 创建FileItem对象的工厂
            DiskFileItemFactory factory = new DiskFileItemFactory();
            // 获取Servlet上下文
            ServletContext servletContext = null;
            servletContext = this.getServletConfig().getServletContext();
            // 获取临时文件夹
            String str = "javax.servlet.context.tempdir";
            File repository = (File) servletContext.getAttribute(str);
            factory.setRepository(repository);
            // 创建文件上传处理器
            ServletFileUpload upload = new ServletFileUpload(factory);
            // 解决中文乱码
            upload.setHeaderEncoding("utf-8");
            // 解析request获取上传的参数
            try {
                // 使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
                List<FileItem> items = upload.parseRequest(request);
                // 解决上传文件名的中文乱码
                upload.setHeaderEncoding("UTF-8");
                // 处理参数
                for (FileItem item : items) {
                    // 判断是否为Form的表单域,即判断是否为普通的数据,若不是则为文件。
                    if (item.isFormField()) {
                        String name = item.getFieldName();
                        // 解决普通输入项的数据的中文乱码问题
                        String value = item.getString("UTF-8");
                        // value = new String(value.getBytes("iso8859-1"),"UTF-8");
                        //System.out.println(name + "=" + value);
                    } else {
                        // 设置上传单个文件的大小的最大值,目前是设置为1024*1024*10字节,也就是10MB
                        upload.setFileSizeMax(1024 * 1024 * 10);
                        // 写入文件
                        // 此处本项目在服务器中的路径,为绝对路径,也可以根据需要存入到其他路径
                        String rootPath = servletContext.getRealPath("//");
                        // File.separator(相当于添加了一个分隔符),在windows下的路径分隔符(\)和在linux下的路径分隔符(/)是不一样的,当直接使用绝对路径时,跨平台会报异常                        
                        String savePath = rootPath + File.separator + "upload";
                                                 
                        // String savePath = "E:\\eclipse-workspace\\JAVAWeb\\jsPUploadTest\\fileByupload";
 
                        File fileSaveFolder = new File(savePath);
                        // 如果不存在该文件夹则创建
                        if (!fileSaveFolder.exists()) {
                            fileSaveFolder.mkdir();
                        }
                        oldFileName = item.getName();
                        newFileName = processFileName(oldFileName);
                        saveFileName = savePath + File.separator + newFileName;
                        // 存储文件
                        File uploadedFile = new File(saveFileName);
                        item.write(uploadedFile);
                    }
                }
                request.setAttribute("message", "文件上传成功!");
            } catch (FileUploadBase.FileSizeLimitExceededException e) {
                e.printStackTrace();
                request.setAttribute("message", "照片大小不能超过10M");
                request.getRequestDispatcher("Show.jsp").forward(request, response);
                return;
            } catch (FileUploadException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            request.setAttribute("saveFileName", saveFileName);
            request.setAttribute("newFileName", newFileName);
            request.getRequestDispatcher("Show.jsp").forward(request, response);
        }
    }
 
    // 对文件名进行处理
    private String processFileName(String oldFileName) {
        // 补充:对于 item.getName()有的浏览器会返回文件名,而有的浏览器会返回“路径”+“文件名”,针对后者我们需要通过“字符串截取”获取文件名
        // 例如会出现这样的情况:item.getName():C:\Users\Desktop\备忘录.txt
        String tempFileName = "";
        int index = oldFileName.lastIndexOf("\\");
        if (index != -1) {
            // subString(x)是从字符串的第x个字符截取
            tempFileName = oldFileName.substring(index + 1);
        }
        // 为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
        return UUID.randomUUID().toString() + "_" + tempFileName;
    }
}

3.图片展示

<p>${message}</p>
  <img id="picture" src="upload/${newFileName}" width="200px" height="200px" alt="不是图片">

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

--结束END--

本文标题: javaWeb实现简单文件上传

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

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

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

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

下载Word文档
猜你喜欢
  • javaWeb实现简单文件上传
    本文实例为大家分享了javaWeb实现简单文件上传的具体代码,供大家参考,具体内容如下 1.先导入两个包:commons-fileupload-1.3.3.jar,commons-i...
    99+
    2022-11-13
  • 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简单文件上传流程的实战记录
    目录引言前端上传文件后端接受文件总结 引言 这里实现一个简单的图片上传功能,主要是熟悉这个文件上传的交互流程。关于更复杂的文件上传,如大文件的切片上传、断点续传等,这里不做...
    99+
    2022-11-13
  • JavaWeb 文件的上传和下载功能简单实现代码
    一、文件的上传和下载1、文件上传的原理分析     1、文件上传的必要前提:          a、提供for...
    99+
    2023-05-31
    java web 文件上传
  • 简单实现Android文件上传
    文件上传在B/S应用中是一种十分常见的功能,那么在Android平台下是否可以实现像B/S那样的文件上传功能呢?答案是肯定的。下面是一个模拟网站程序上传文件的例子。 首先新...
    99+
    2022-06-06
    Android
  • SpringBoot简单实现文件上传
    目录1.创建SpringBoot项目2.修改application.properties配置文件3.编写控制器UserController类4.编写前端页面index.html5.效...
    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实现文件上传小功能
    本文实例为大家分享了javaweb实现文件上传的具体代码,供大家参考,具体内容如下 1.创建文件上传页面 <%@ page contentType="text/html;cha...
    99+
    2022-11-13
  • JavaWeb中怎么实现文件上传
    这期内容当中小编将会给大家带来有关JavaWeb中怎么实现文件上传,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。引入依赖当然在引入依赖之前我们需要先创建一个被Maven管理的Web Project,创建方...
    99+
    2023-06-19
  • Servlet实现简单文件上传功能
    本文实例为大家分享了Servlet文件上传的具体代码,供大家参考,具体内容如下两点要素: 表单提交方式必须是post 2.enctype一定要是multipart/form-data。 enctype的默认值是application/x-w...
    99+
    2023-05-30
    servlet 文件上传 实现简单
  • Python+django实现简单的文件上传
    今天分享一下Django实现的简单的文件上传的小例子。 步骤 •创建Django项目,创建Django应用 •设计模型 •处理urls.py 以及views.py ...
    99+
    2022-06-04
    文件上传 简单 Python
  • JavaWeb实现文件上传功能详解
    文件上传功能的实现 在大多数网站中,我们都可以看见文件上传和下载功能的实现,今天我们就文件上传做一个详细的总结 实现步骤: 1、新建一个JSP页面:表单必须设置:enctype=&...
    99+
    2022-11-13
  • JavaWeb实现文件的上传与下载
    JavaWeb实现文件的上传与下载,供大家参考,具体内容如下 第一步:导包 导入commons-fileupload-1.3.3.jar和commons-io-2.4.jar两个依赖...
    99+
    2022-11-12
  • 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
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作