利用servlet对文件进行上传和下载

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="Dome2Servlet" method="post" enctype="multipart/form-data">
    <table>
        <tr>
            <td>账号:</td>
            <td><input type="text" name="username"></td>
        </tr>
        <tr>
            <td>密码:</td>
            <td><input type="password" name="password"></td>
        </tr>
        <tr>
            <td>头像:</td>
            <td><input type="file" name="photo"></td>
        </tr>
    </table>
    <input type="submit">
</form>
</body>
</html>
<%--
  Created by IntelliJ IDEA.
  User: xx
  Date: 2023/8/28
  Time: 9:49
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
<%--  $END$--%>
<%--  <a href="Dome1Servlet">测试</a>--%>
  <img href = "E:\SpecializedCode\JAVA_PeiXun\test">
  <a href="Dome1Servlet" name="photo">下载</a>
  </body>
</html>
package com.etime.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

@WebServlet(name = "Dome1Servlet", urlPatterns = "/Dome1Servlet",loadOnStartup = 0)
public class Dome1Servlet extends HttpServlet {
   /* @Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("服务");
    }

    @Override
    public void destroy() {
        System.out.println("销毁");
    }

    @Override
    public void init() throws ServletException {
        System.out.println("初始化");
    }*/

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //Location的使用
        /*resp.setStatus(302);
        resp.setHeader("Location","http://baidu.com");*/

        //Refresh的使用
        /*resp.setHeader("Refresh","3; url = http://baidu.com");*/

        /*resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        writer.println("今天天气好");
        writer.close();*/

        //文件下载
        //告知浏览器,以附件的形式打开文件
        resp.setHeader("Content-Disposition","attachment;filename=background.jpg");
        //读取指定文件
        InputStream in = new FileInputStream("E:\\SpecializedCode\\test\\background.jpg");
        //创建输出流
        ServletOutputStream outputStream = resp.getOutputStream();
        //边读边写
        byte[] bytes = new byte[1024];
        int index = 0;
        while ((index = in.read(bytes))!=-1){
            outputStream.write(bytes,0,index);
        }
        outputStream.close();
        in.close();
    }


}
package com.etime.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.File;
import java.io.IOException;

@MultipartConfig
@WebServlet(name = "Dome2Servlet", urlPatterns = "/Dome2Servlet")
public class Dome2Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       /* System.out.println(request.getMethod());
        System.out.println(request.getRequestURI());
        System.out.println(request.getRequestURL());
        System.out.println(request.getProtocol());
        System.out.println(request.getServerName());
        System.out.println(request.getServerPort());*/

        String s = "utf-8";
        request.setCharacterEncoding(s);

        System.out.println(request.getParameter("username"));
        System.out.println(request.getParameter("password"));
        //System.out.println(request.getParameter("photo"));

        //文件上传
        //获取上传文件对象
        Part part = request.getPart("photo");
        //获取文件名字
        String submittedFileName = part.getSubmittedFileName();
        //指定文件上传路径
        String path = "E:\\SpecializedCode\\test";
        File file = new File(path);
        if (!file.exists()){
            file.mkdirs();
        }
        //在指定位置创建文件,并将资源文件放入该文件夹中
        part.write(path+"\\"+submittedFileName);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java是一种通用的编程语言,它可以用于开发各种类型的应用程序,包括前后端上传下载文件。前端和后端上传下载文件的需求通常是由Web应用程序驱动的,这些应用程序需要在浏览器和服务器之间传输文件。 在Java中,可以使用多种API实现前后端文件上传下载。一种常用的API是Apache Commons FileUpload。此外,Java Servlet API也提供了一些方法来处理文件上传下载。 对于前端上传文件,可以使用HTML5的文件API来读取和上传文件。HTML5的FileReader API可以读取文件内容并将其发送到服务器,而XMLHttpRequest对象可以无需刷新页面即可向服务器发送请求。 后端文件上传可以通过Servlet API或Apache Commons FileUpload来实现。先通过HTTP请求接收文件,再利用Java的IO API将文件存储到磁盘上。文件下载同样也可以使用Java IO API,将文件从磁盘上读取并发送到浏览器。 在实现文件上传下载时,需要注意安全性和性能问题。上传文件必须进行验证和限制,以避免恶意用户上传无用文件或接管整个服务器。同时,文件下载也需要进行缓存和保存,以提高性能和减少网络带宽的使用。 总之,Java提供了多种实现前后端文件上传下载的工具和API,可以满足不同应用程序的需求。开发者需要根据具体的应用场景选择合适的工具和实现方案,并关注安全和性能问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MaGgIeOo0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值