上传和下载

在这里插入图片描述
1.上传核心原理(重点)

1.1.jsp注意点(背会)

(1)form表单请求方式为POST请求

(2)form的enctype属性值为“multipart/form-data”
(含义:设置表单的类型为文件上传表单)

(3)获取文件通过type属性值file

(4)上传文件务必设置name属性值

1.2.servlet注意点(背会)

(1)通过getPart()方法获取Part对象

Part part = request.getPart("myfile");

(2)通过getSubmittedFileName()方法获取上传的文件名

String fileName = part.getSubmittedFileName();
System.out.println("上传文件名:"+fileName);

(3)获取上传文件存放的路径

String filePath = request.getServletContext().getRealPath("/");
System.out.println("文件存放的路径:"+filePath);

上下文

(4)将文件上传到指定位置

part.write(filePath+"/"+fileName);

2.上传实战

2.1 配置tomcat8

2.2 创建工程,并导入tomcat8中的servlet和jsp的jar包

2.3 创建upload.jsp

       <form action="/UpServlet" enctype="multipart/form-data"  method="post">
        姓名:<input type="text" name="uname" /><br />
<%-- 姓名不会上传到服务器 可写可不写 是到数据库的--%>
        文件:<input type="file" name="myfile" /><br />
        <input type="submit" value="上传" />
<%-- 传到工程里--%>
    </form>

注意点:
enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。

multipart/form-data 不对字符编码。
在使用包含文件上传控件的表单时,必须使用该值。

2.4 创建UpServlet(省略导包)

使用注解@MultipartConfig
将一个Servlet标识为支持文件上传

@MultipartConfig //有这个注解别忘了
public class UpServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.设置字符集
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //2.获取上传者
        String uname = request.getParameter("uname");
        System.out.println("上传者:" + uname);
        //3.获取part对象
// Servlet3.0将multipart/form-data的POST请求封装成Part对象,通过Part对象完成上传文件的操作,
//但是它没有提供直接获取文件名的方法,需要通过Part对象从请求中解析出来
        Part part = request.getPart("myfile");
        //4.获取文件名
        String fileName = part.getSubmittedFileName();
        System.out.println("文件名:"+fileName);
        //5.获取上传文件路径
        String filePath = request.getServletContext().getRealPath("/");
	 //当前绝对路径
        //是根据上面这个路径来进行传到哪
        System.out.println("上传的路径:"+filePath);
        //6.上传文件到指定位置
        String locationUrl = filePath + "/" +fileName;
        part.write(locationUrl);
//        传入一个保存文件的绝对路径,即可保存上传的文件
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

javax.servlet.ServletContext接口(摘录)
Servlet上下文具有名字(它属于Web应用的名字)唯一映射到文件系统的一个目录。
Web应用中servlet可以使用servlet上下文得到:
1.在调用期间保存和检索属性的功能,并与其他servlet共享这些属性。
2.读取Web应用中文件内容和其他静态资源的功能。
3.互相发送请求的方式。
4.记录错误和信息化消息的功能。

ServletContext接口中的方法:
String getRealPath(String path)
给定一个URI,返回文件系统中URI对应的绝对路径。
如果不能进行映射,返回null。

2.5 web.xml

<web-app>
  <display-name>Archetype Created Web Application</display-name>
    <servlet>
        <servlet-name>UpServlet</servlet-name>
        <servlet-class>cn.kgc.servlet.UpServlet</servlet-class>
    </servlet>
<servlet-mapping>
        <servlet-name>UpServlet</servlet-name>
        <url-pattern>/UpServlet</url-pattern>
    </servlet-mapping>
</web-app>

2.6测试上传

3.下载核心原理

3.1 jsp注意点

(1)测试不输入参数的校验

(2)测试输入错误参数的校验

(3)测试输入正确参数的校验

3.2 servlet注意点

(1)参数的非空校验,去除字符串的前后空格

if(name==null || “”.equals(name.trim())){
response.getWriter().write(“请输入要下载的文件名”);
//关闭流
response.getWriter().close();
//退出程序
return;
}

(2)获取文件下载路径

String path = getServletContext().getRealPath("/");

(3)判断文件是否存在并且是一个标准文件

file.exists() && file.isFile()

(4)下载文件
ServletOutputStream os = response.getOutputStream();

4.下载实战

4.1创建download.jsp

  <body>
    <form action="/DownLoadServlet" method="post">
        <input type="text" name="fileName" placeholder="请输入要下载的文件">
        <input type="submit" value="下载" />
        <%-- <button>下载</button>--%>
		<%--了解就行 是野路子--%>
    </form>
</body>

4.2创建DownServlet
(导包省略啊)


public class DownLoadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.设置字符集
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //2.利用name对应的value值为fileName的值,获取选择的文件名称
        String fileName = request.getParameter("fileName");
        //3.校验判空,并去除前后空格
        if (fileName == null || "".equals(fileName.trim())){
//            trim() 方法用于删除字符串的头尾空白符。
            response.getWriter().write("请输入要下载的文件名称");
            //4.关闭资源
            response.getWriter().close();
            //5.退出程序
            return;
        }
        //6.获取文件下载路径
        String path = getServletContext().getRealPath("/");
        //7.构建文件全路径
        File file = new File(path + fileName);
        //8.校验2:判断文件是否存在
        if (file.exists() && file.isFile()){
            //校验三:
            //9.设置Content-Type头字段的值
            response.setContentType("application/x-msdownload");
            //10.设置Header
            response.setHeader("Content-Disposition","attachment;filename=" + fileName);
            //11.实例化文件流,读取文件
            FileInputStream is = new FileInputStream(file);
            //12.写出文件
            ServletOutputStream os = response.getOutputStream();
            //13.定义数组,并通过流的方式将数据写出到文件中
            byte[] array = new byte[1024];
            int len = 0;
            while ((len = is.read(array))!= -1){
                os.write(array,0,len);
            }
        }else {
            response.getWriter().write("文件不存在,请重新输入!");
            //(1).关闭资源
            response.getWriter().close();
            //(2).退出程序
            return;
        }
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

4.3 web.xml

<servlet>
    <servlet-name>DownLoadServlet</servlet-name>
    <servlet-class>cn.kgc.servlet.DownLoadServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>DownLoadServlet</servlet-name>
    <url-pattern>/DownLoadServlet</url-pattern>
</servlet-mapping>
<!--    有顺序 放中间-->

在上面的上传里放中间 (maven中)不然可能就报错

4.4测试下载
注意一:
http://localhost:8080/download.jsp
在这里插入图片描述
如果为空,或者空格,就会出现下面的
请输入要下载的文件名称

注意二:
http://localhost:8080/upload.jsp
在这里插入图片描述
然后http://localhost:8080/download.jsp
文件名没输对
在这里插入图片描述
文件不存在,请重新输入!

正确时,就会进行下载:
在这里插入图片描述
题外话:
1 << 3 ==》 1 * 2^3
左移一位后最右位补0,移几位补几个0;
结果:二进制1000 十进制8

----2021.11.19

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Artifactory 是一种开源的二进制制品管理工具,它可以为您的软件项目提供上传下载功能。 上传功能让您可以将您需要分享的二进制制品存储到 Artifactory 中。通过上传您的制品,您可以将您的制品保存在 Artifactory 中,以便在将来进行访问和下载上传功能可通过使用 Artifactory 命令行接口 (CLI) 或使用脚本实现。当您上传制品时,Artifactory 会自动创建相关的目录和其他必要的结构。 下载功能让您可以从 Artifactory 中检索您需要的二进制制品。您可以使用通配符、正则表达式、坐标和其他过滤器来搜索和检索制品。通过下载功能,您可以轻松下载所需的制品,而无需担心其依赖关系。您还可以通过将 Artifactory 配置为访问缓存 Maven Central 或 JetBrains 等公共仓库来加速制品的下载过程。 总的来说,Artifactory 上传下载功能为您的软件项目提供了一个可靠和方便的方法来存储和检索您的二进制制品和组件。无论您是在开发、构建还是部署,Artifactory 都会成为您的信任伙伴。 ### 回答2: Artifactory 是一个用于管理软件发布和依赖关系的平台。对于开发者们来说,许多项目会产生各种各样的编译产物,例如包括 JAR,ZIP 文件、WAR,EAR 等等。这些编译产物的管理通常需要一个专门的工具,Artifactory 就是这样一个工具。 其中,Artifactory 的上传下载功能是非常重要的部分,对于开发者来说,常常会使用这些功能来进行软件发布。下面我们详细讲解 Artifactory 的上传下载功能。 一、Artifactory 的上传功能 上传功能是 Artifactory 最基本的 功能之一,它可以将本地的构建产物上传到 Artifactory 服务器上。上传的过程大概可以分为以下几个步骤: 1. 在 Artifactory 中创建仓库:首先需要在 Artifactory 服务器中创建一个仓库来存储构建产物。 2. 配置构建产物:在构建过程中需要用到发布仓库信息,可以采用不同的构建工具进行配置。Maven 的配置是pom.xml, Gradle 的则是build.gradle。 3. 执行发布操作:执行构建命令后,执行发布操作,工具会自动上传构建产物到 Artifactory 服务器上。 二、Artifactory 的下载功能 Artifactory 的下载功能是与上传功能相对应的。下载功能是将存储在 Artifactory 服务器上的构建产物下载到本地。Artifactory 的下载功能支持以下几种方式: 1. Web UI:打开 Artifactory 控制台,选择需要下载的构建产物,选择下载栏,即可下载。 2. 远程仓库:不同的构建工具都支持将 Artifactory 服务器上的构建产物作为远程仓库,然后在本地进行下载。 3. RESTful API:Artifactory 的 RESTful API 也提供了下载方法,可以通过 API 调用实现下载操作。 总之,上传下载是 Artifactory 最为基础的功能。对于需要发布软件的开发者,他们常常都需要通过 Artifactory 完成这些操作。而 Artifactory 也通过其上传下载功能为开发者们提供了便利。谢谢! ### 回答3: Artifactory是一款企业级的软件包仓库管理工具。Artifactory不仅可以存储软件包,而且还可以管理软件包之间的依赖关系,并且可以根据需要创建自己的本地仓库、远程仓库和虚拟仓库,方便各种开发人员进行统一管理和分发。 上传软件包 在使用Artifactory上传软件包之前,需要先准备好要上传的软件包,并确保Artifactory中已经创建好了相应的仓库。对于Maven包和npm包,可以使用相应的构建工具在构建过程中自动上传到预定的Artifactory仓库,也可以使用HTTP API手动上传软件包。对于其他类型的文件,可以使用UI或HTTP API手动上传。 Artifactory上传步骤: 1.登录Artifactory,并在UI上选择要上传的仓库。 2.选择“上传”选项并选择要上传的文件。 3.填写文件描述信息(文件描述、许可证等)。 4.点击“上传”按钮进行上传下载软件包 在Artifactory中下载软件包同样也要先准备好下载链接,并确定Artifactory中已经存储了需要下载的软件包。Artifactory提供了多种下载方式,例如通过Maven、Gradle或npm等工具进行自动下载,或者直接通过HTTP API或Artifactory UI手动下载。 Artifactory下载步骤: 1. 在Artifactory UI上,进入要下载的仓库并找到要下载的文件。 2. 点击文件名称或版本号来打开文件详情页面。 3. 在文件详情页面上,找到想要下载的文件并点击下载按钮。 4. 下载文件。 总之,Artifactory是一款功能强大的仓库管理工具,它提供了全面的上传下载功能,为开发人员提供了方便的软件包管理。无论是上传软件包还是下载软件包,都可以通过Artifactory UI或HTTP API等方式完成,方便快捷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值