广告
返回顶部
首页 > 资讯 > 后端开发 > Python >java实现文件上传和下载
  • 816
分享到

java实现文件上传和下载

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

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

摘要

本文实例为大家分享了java实现文件上传和下载的具体代码,供大家参考,具体内容如下 文件的上传 upload:文件上传 客户端通过表单的文件域file  把客户端的文件 上

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

文件的上传

upload:文件上传

客户端通过表单的文件域file  把客户端的文件 上传保存到服务器的硬盘上

页面

首先对上传的表单有以下要求:

  • 必须有文件域:input type=file
  • 表单提交方式:method=post
  • 表单的 enctype=multipart/fORM-data

<form method="post" action="/user/reGISt" enctype="multipart/form-data">
        <table style="border: chartreuse;solid:2px">
            <tr>
                <th>用户名</th>
                <td><input type="text" name="username"></td>
            </tr>
            <tr>
                <th>密码</th>
                <td><input type="passWord" name="password"></td>
            </tr>
            <tr>
                <th>用户头像</th>
                <td><input type="file" name="photo"> </td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="提交"></td>
            </tr>
        </table>
</form>

Servlet

1)首先要导入以下两个jar包,通过commons-fileupload实现文件上传

2)创建一个工厂对象DiskFileItemFactory,在创建一个多部件表单解析器ServletFileUpload,构造方法传入工厂对象

3)解析器解析请求对象,获得一个list集合,其中list集合存储的是一个一个的fileItem对象,一个fileItem对应一个组件,也就是一个<input>

4) 遍历集合用isFormField()方法判断是否为普通组件,然后着重处理文件域组件

5)获取文件名,并用getRealPath方法获取服务器上传文件所在路径,创建新文件夹

6)获取输入流和创建输出流,进行文件的读写


@WEBServlet(value = "/user/regist")
public class UploadServlet extends httpservlet {
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //创建一个工厂对象
        DiskFileItemFactory factory = new DiskFileItemFactory();
        //创建一个多部件解析器对象
        ServletFileUpload fileUpload = new ServletFileUpload(factory);
        User user = new User();
        FileOutputStream out=null;
        try {
            //用解析器对象解析请求,返回一个FileItem类型的集合
            List<FileItem> list = fileUpload.parseRequest(req);
            for (FileItem fileItem : list) {
                
                //判断部件是否为普通组件
                if (fileItem.isFormField()) {//普通组件
                    //获取组件名字也就是name的值
                    String fieldName = fileItem.getFieldName();
                    //获取组件的值也就是value的值
                    String value = fileItem.getString("utf-8");
                    if ("username".equals(fieldName)) { //设置实体类的属性
                        user.setUsername(value);
                    } else if ("password".equals(fieldName)) {
                        user.setPassword(value);
                    }
                } else {// 文件域
                    //获取文件名
                    String fielName = fileItem.getName();
                    //输入流来读数据
                    InputStream in = fileItem.getInputStream();
                    //设置文件写出的路径,并用随机码来保证图片可以重复
                    String path=req.getServletContext().getRealPath("/imgs/"+ UUID.randomUUID()+fielName);
                    System.out.println("文件路径为:"+path);
                    File file = new File(path);
                     out = new FileOutputStream(file);
                     //利用commons-io-1.4.jar的IOUtils的copy方法直接实现文件的复制
                    IOUtils.copy(in,out);
                    user.setPhoto(file.getName());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if(out!=null){
                out.close();
            }
        }
        req.getSession().setAttribute("user",user);
        req.getRequestDispatcher("/sucess.jsp").forward(req,resp);
    }
 
}

文件的下载

页面

只需一个超链接,传需要下载的文件名,或者直接输入路径在浏览器

例: <a  href="<c:url value='/file/download?fileName=14.jpg'/>" >狗狗1</a><br/>

Servlet

1)接收参数,获取文件名

2)获取imgs的路径,也就是存储文件的文件夹的路径,然后创建文件,传入该路径和文件名

3)创建输入流读取文件

4)设置响应头,首先根据文件名字获取文件的大类型,设置响应头Content-Type指定响应的类型;设置响应头Content-Disposition,指定文件以附件形式保存到本地磁盘

5)用响应获取输出流,读出文件到客户端


@WebServlet("/user/download")
public class DownloadServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        //获取要下载的文件名
        String fileName = request.getParameter("fileName");
        System.out.println(fileName);
        //获取服务器中存储图片的文件夹的路径
        String path1 = request.getServletContext().getRealPath("/imgs");
        String path=path1+"/"+fileName;
        File file = new File(path);
        //创建输入流读文件
        FileInputStream in = new FileInputStream(file);
        //通过文件名字获取文件的大类型
        String type = request.getServletContext().getMimeType(fileName);
        //设置响应头ContentType指定响应内容的类型
        response.setHeader("Content-type",type);
        //设置响应头Content-Disposition 指定以附件形式保存响应的信息
        response.setHeader("Content-Disposition","attachment;filename="+(URLEncoder.encode(fileName, "utf-8")));
        ServletOutputStream out = response.getOutputStream();
        //实现文件的读写
        IOUtils.copy(in,out);
        if(in!=null){
        in.close();
        }
    }
}

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

--结束END--

本文标题: java实现文件上传和下载

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

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

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

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

下载Word文档
猜你喜欢
  • java实现文件上传和下载
    本文实例为大家分享了java实现文件上传和下载的具体代码,供大家参考,具体内容如下 文件的上传 upload:文件上传 客户端通过表单的文件域file  把客户端的文件 上...
    99+
    2022-11-12
  • Java实现HDFS文件上传下载
    本文实例为大家分享了利用Java实现HDFS文件上传下载的具体代码,供大家参考,具体内容如下 1、pom.xml配置 <!--配置--> <properties&g...
    99+
    2022-11-13
  • java实现文件上传下载功能
    本文实例为大家分享了java实现文件上传下载的具体代码,供大家参考,具体内容如下 1.上传单个文件 Controller控制层 import java.io.File; imp...
    99+
    2022-11-12
  • ASP.NETCore实现文件上传和下载
    本文实例为大家分享了ASP.NET Core实现文件上传和下载的具体代码,供大家参考,具体内容如下 一、文件上传 1.1 获取文件后缀 /// <summary> ///...
    99+
    2022-11-13
  • Go实现文件上传和下载
    本文实例为大家分享了Go实现文件上传和下载的具体代码,供大家参考,具体内容如下 一.文件上传 文件上传:客户端把上传文件转换为二进制流后发送给服务器,服务器对二进制流进行解析 HTM...
    99+
    2022-11-11
  • vue实现文件上传和下载
    本文实例为大家分享了vue实现文件上传和下载的具体代码,供大家参考,具体内容如下 文件上传 vue中的文件上传主要分为两步:前台获取到文件和提交到后台 获取文件 前台获取文件,主要是...
    99+
    2022-11-12
  • springMVC实现文件上传和下载
    本文实例为大家分享了springMVC实现文件上传和下载的具体代码,供大家参考,具体内容如下 1准备工作 web.xml文件导入DispatcherServlet,Character...
    99+
    2022-11-12
  • java实现ftp文件上传下载功能
    本文实例为大家分享了ftp实现文件上传下载的具体代码,供大家参考,具体内容如下package getUrlPic;import java.io.ByteArrayInputStream;import java.io.IOException;...
    99+
    2023-05-31
    ftp 上传 下载
  • Java怎么实现HDFS文件上传下载
    今天小编给大家分享一下Java怎么实现HDFS文件上传下载的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。pom.xml配置&...
    99+
    2023-07-02
  • Spring MVC实现文件上传和下载
    本文实例为大家分享了Spring MVC实现文件上传和下载的具体代码,供大家参考,具体内容如下 文件上传 1、导入主要依赖 <!--文件上传--> <depe...
    99+
    2022-11-12
  • Spring Boot实现文件上传和下载
    实现Spring Boot文件上传和下载的步骤: 1.文件上传 在pom.xml文件中添加依赖:spring-boot-starter-web和spring-boot-starter-thymelea...
    99+
    2023-09-06
    spring boot java servlet
  • SpringMVC实现上传下载文件
    本文实例为大家分享了SpringMVC实现上传下载文件的具体代码,供大家参考,具体内容如下 一、SpringMVC专门提供了CommonsMultipartResolver组件用于文...
    99+
    2022-11-13
  • java- SFTP文件上传下载
    JSch - SFTP文件上传下载 文章目录 JSch - SFTP文件上传下载1. JSch简介2. ChannelSftp常用ApiJSch支持三种文件传输模式文件上传 put() 方法文...
    99+
    2023-09-30
    java 服务器
  • Java上传下载ftp文件
    在Java中连接FTP服务器可以使用Apache Commons Net库提供的FTPClient类。以下是一个简单的示例代码,演示如何连接到FTP服务器、进行文件上传和下载操作: import org.apache.commons.net...
    99+
    2023-09-03
    java apache 服务器
  • Java实现文件上传和下载的方法详解
    目录1、文件上传1.1 介绍1.2 代码实现2、下载2.1 介绍2.2 代码实现1、文件上传 1.1 介绍 文件上传,也称为upload,是指将本地图片、视频、音频等文件上传到服务器...
    99+
    2022-11-13
  • Spring MVC 实现文件的上传和下载
    文章目录 前言1. 文件上传1.1 文件上传介绍1.2 文件上传实现1.2.1 添加依赖1.2.2 配置上传解析器1.2.3 通过表单上传1.2.4 创建控制器类1.2.5 上传演示 ...
    99+
    2023-09-26
    spring mvc java java-ee
  • springMVC怎么实现文件上传和下载
    本篇内容介绍了“springMVC怎么实现文件上传和下载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本文实例为大家分享了springMVC...
    99+
    2023-06-20
  • Android Http实现文件的上传和下载
    最近做一个项目,其中涉及到文件的上传和下载功能,大家都知道,这个功能实现其实已经烂大街了,遂、直接从网上荡了一堆代码用,结果,发现网上的代码真是良莠不齐,不是写的不全面,就是有...
    99+
    2022-06-06
    HTTP Android
  • Vue实现文件上传和下载功能
    本文实例为大家分享了Vue实现文件上传和下载功能的具体代码,供大家参考,具体内容如下 1、a标签download属性 在H5中,为a标签新增了一个download属性,来直接文件的...
    99+
    2022-11-12
  • SpringBoot如何实现上传和下载文件
    这篇文章主要介绍SpringBoot如何实现上传和下载文件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!技术概述我们的项目是实现一个论坛。在论坛上发布博客时应该要可以上传文件,用户阅读博客是应该要可以下载文件。于是我...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作