文件上传upload 文件下载 download

前端页面

<html>
<head>
    <title>$Title$</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="uploadServlet">
    姓名:<input type="text" name="uname" > <br>
    文件:<input type="file" name="myfile"> <br>
    <!--button默认的类型是提交类型 type="submit" -->
    <button>提交</button>
</form>
</body>
</html>

后端 文件上传

package com.xxxx.servlet;
        import javax.servlet.ServletException;
        import javax.servlet.annotation.MultipartConfig;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import javax.servlet.http.Part;
        import java.io.IOException;
        import java.io.PrintWriter;
/**
 * 文件上传
 *      使用注解 @MultipartConfig将一个 Servlet 标识为支持文件上传。
 *      Servlet 将 multipart/form-data 的 POST 请求封装成 Part对象,通过 Part 对上传的文件进行操作。
 */
@WebServlet("/uploadServlet")
@MultipartConfig // 如果是文件上传,必须要设置该注解!!!
public class UploadServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("文件上传...");
        // 设置请求的编码格式
        request.setCharacterEncoding("UTF-8");
        // 获取普通表单项(获取参数)
        String uname = request.getParameter("uname"); // 表单中表单元素的name属性值
        System.out.println("uname:" + uname);
        // 获取Part对象 (Servlet 将 multipart/form-data 的 POST 请求封装成 Part对象)
        Part part = request.getPart("myfile"); // 表单中file文件域的name属性值
        // 通过Part对象得到上传的文件名
        String fileName = part.getSubmittedFileName();
        System.out.println("上传文件名:" + fileName);
        // 得到文件存放的路径
        String filePath = request.getServletContext().getRealPath("/");
        System.out.println("文件存放的路径:" + filePath);
        // 上传文件到指定目录
        part.write(filePath +"/"+ fileName);
        PrintWriter writer = response.getWriter();
        writer.write("Hello");
        writer.write("<h2>Hello</h2>");
    }
}

运行结果展示

 

 后端代码 通过part得到的对象 sout输出到客户端

要想在前端展示 用流来实现

字符输出流 getWriter()

字节输出流 getOutputStream()

//字符输出流
PrintWriter m= response.getWriter();
m.write("Hello");
m.write("<h2>Hello</h2>");


//字节输出流
ServletOutPutStream m=response.getOutputStream();
m.write("Hello".getByte());
m.write("<h2>Hello</h2>".getBytes());

下载页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件下载</title>
</head>
<body>
<a href="download/新建%20DOC%20文档.txt">文本文件</a>
<a href="download/微信图片_20230308151604.png">图片文件</a>
<a href="download/jquery-3.4.1.js.zip" download="Baidu">压缩文件</a>
</body>
</html>

href写文件地址 download后面写重命名

需要把文件准备好

 

显示如图

 综上所述 为服务器上传 下载的原理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值