Cos 文件上传下载

news/2025/1/15 21:56:46/

目录

方法一:

maven依赖:

UploadServlet 

upload.jsp

 方法二:

maven依赖

UploadServlet

upload.jsp

success.jsp

error.jsp

运行结果:

 百度文件上传插件: Web Uploader


本文通过JSP+Servlet的架构,用cos maven依赖 实现文件的上传与下载。不涉及数据库交互。

方法一:

maven依赖:

    <dependency><groupId>com.jfinal</groupId><artifactId>cos</artifactId><version>2019.8</version></dependency>

UploadServlet 

package com.dong.servlet;/*** 文件上传*/import com.oreilly.servlet.MultipartRequest;import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.File;
import java.io.IOException;
import java.io.Serial;@WebServlet("/uploadServlet")
@MultipartConfig
public class UploadServlet extends HttpServlet {@Serialprivate static final long serialVersionUID = 1L;@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//模拟服务器上传文件位置-----最好是工程下的相对路径String saveDirectory="D:\\JavaWeb_实验作业\\沈立栋_1_2021215725_16周实验";File saveDir=new File(saveDirectory);if (!saveDir.exists()){//如果上传的文件不存在就创建它saveDir.mkdirs();}//文件大小限制:10MBint maxPostSize=10*1024*1024;/**使用了 MultipartRequest 类,它是一个常用的文件上传类。*可以将一个请求中的多个表单字段以及对应的文件上传到服务器的指定目录中。*这段代码的作用是解析客户端发送过来的 multipart/form-data 类型的请求,其中:** request 是一个 HttpServletRequest 对象,即客户端发送的请求对象;**saveDirectory 是一个字符串,表示要将文件保存到服务器的哪个目录;**maxPostSize 是一个 int 类型的整数,表示接收的 HTTP POST 数据的最大字节数;**"utf-8" 是一个字符串,表示请求中文参数的编码方式,通常为 UTF-8。**执行该代码后,multipartRequest 就可以获取上传的文件和表单数据了。我们可以通过以下方法访问它们:**File file = multipartRequest.getFile("fieldName"):返回与指定字段名相应的上传文件;**String parameter = multipartRequest.getParameter("fieldName"):返回指定字段名的表单数据。*/MultipartRequest multipartRequest;multipartRequest=new MultipartRequest(request,saveDirectory,maxPostSize,"utf-8");}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}

upload.jsp

<%--Created by IntelliJ IDEA.User: CaptainDongDate: 2023/6/14Time: 10:29To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>文件上传</title>
</head>
<body>
<form action="uploadServlet" method="POST" enctype="multipart/form-data"><input type="file" name="file1"/><input type="submit" value="提交" />
</form>
</body>
</html>


 方法二:

    方法一使用了 `com.oreilly.servlet.MultipartRequest` 这个类来实现文件上传功能。但需要注意的是,该类已经被 Apache Commons FileUpload 取代,如果你的 Tomcat 版本较新,可能会出现找不到该类的情况。

推荐使用 Apache Commons FileUpload 来实现文件上传功能。具体实现可以参照以下步骤:
 

maven依赖

    <!--使用 Apache Commons FileUpload 来实现文件上传功能--><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency>

UploadServlet

package com.dong.servlet;import java.io.File;
import java.io.IOException;
import java.io.Serial;
import java.util.List;import javax.servlet.ServletException;
import javax.servlet.annotation.*;
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.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;@WebServlet("/uploadServlet")
public class UploadServlet extends HttpServlet {@Serialprivate static final long serialVersionUID = 1L;@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//模拟服务器上传文件位置-----最好是工程下的相对路径-----但是我这里必须填绝对路径才行String saveDirectory="D:\\CS\\Code\\练习项目\\Test_NO.16week\\Demo_16\\src\\main\\fileCollections";File saveDir=new File(saveDirectory);if (!saveDir.exists()){//如果上传的文件不存在就创建它saveDir.mkdirs();}//文件大小限制:10MBint maxPostSize=10*1024*1024;// 创建 DiskFileItemFactory 工厂类,用于处理以下两种情况:// 1. 在内存中的数据大小超过了设置的 sizeThreshold 值,就写入临时文件夹;// 2. 某个上传文件的大小超过了设置的 fileSizeMax 值,也会写入临时文件夹。DiskFileItemFactory factory = new DiskFileItemFactory();factory.setRepository(saveDir); // 设置缓存文件夹factory.setSizeThreshold(1024 * 1024); // 设置缓存大小// 创建 ServletFileUpload 对象,用于解析请求ServletFileUpload upload = new ServletFileUpload(factory);upload.setHeaderEncoding("UTF-8"); // 处理中文编码upload.setFileSizeMax(maxPostSize); // 最大文件大小限制try {// 解析请求,获取所有表单项List<FileItem> items = upload.parseRequest(request);// 遍历表单项for (FileItem item : items) {// 是上传文件,而不是普通表单项if (!item.isFormField()) {String fileName = item.getName(); // 获取上传文件名String filePath = saveDirectory + "\\" + fileName; // 获取上传文件的完整路径File file = new File(filePath);item.write(file); // 写入磁盘} else {String fieldName = item.getFieldName(); // 获取普通表单字段名String fieldValue = item.getString("UTF-8"); // 获取普通表单字段值}}// 上传成功,跳转到成功页面response.sendRedirect(request.getContextPath()+"/success.jsp");} catch (FileUploadException e) {// 上传失败,跳转到错误页面response.sendRedirect(request.getContextPath()+"/error.jsp");e.printStackTrace();} catch (Exception e) {e.printStackTrace();}}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request,response);}
}

upload.jsp

<%--Created by IntelliJ IDEA.User: CaptainDongDate: 2023/6/14Time: 10:29To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>文件上传</title>
</head>
<body>
<form action="uploadServlet" method="POST" enctype="multipart/form-data"><input type="file" name="file1"/><input type="submit" value="提交" />
</form>
</body>
</html>

success.jsp

<%--Created by IntelliJ IDEA.User: CaptainDongDate: 2023/6/14Time: 11:24To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><meta charset="UTF-8"><title>文件上传成功</title>
</head>
<body>
<h2>文件上传成功!</h2>
</body>
</html>

error.jsp

<%--Created by IntelliJ IDEA.User: CaptainDongDate: 2023/6/14Time: 11:24To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><meta charset="UTF-8"><title>文件上传失败</title>
</head>
<body>
<h2>文件上传失败,请重试!</h2>
</body>
</html>

当上传成功或失败时,UploadServlet.java 中通过调用 sendRedirect 方法跳转到对应的页面,

// 上传成功,跳转到成功页面 response.sendRedirect(request.getContextPath() + "/success.jsp");

// 上传失败,跳转到错误页面 response.sendRedirect(request.getContextPath() + "/error.jsp");

运行结果:

 


 百度文件上传插件:Web Uploader

这里有一个百度的文件上传: 百度插件:Web Uploader

http://fex.baidu.com/webuploader/

快速开始 - Web Uploader


http://www.ppmy.cn/news/397667.html

相关文章

DM建模实例2

DM建模 DM实例2 DM建模 1 草图绘制2 特征操作3 布尔操作4 总结 1 草图绘制 1.启动 WB&#xff0c;在项目窗口中拖入 Geometry 工作卡片&#xff0c;鼠标右键单击 Edit in DM &#xff0c;进入 DM 工作界面&#xff0c;在 Units 下设置单位为mm。 2.选择xy平面为草图绘制基准面…

DMA概述

目录 传送原理工作方式 DMA即直接存储器存取&#xff08;Direct Memory Access).用DMA传输数据时&#xff0c;在高速I/O设备与存储器之间直接开辟数据传输通道&#xff0c;此时CPU不再直接参与数据交换&#xff0c;而是通过DMA控制器来管理。 DMA数据传输示意如下&#xff1a; …

DM数据库安装及启动教程(Windows超详细版)

DM数据库安装及启动教程&#xff08;Windows版&#xff09; 一、DM系统管理员1.DM数据库管理员的类型&#xff08;四权分立&#xff09; 二、创建和删除DM数据库1.创建DM数据库实例2.删除数据库实例 三、启动和关闭数据库1.启动数据库2.关闭数据库3.数据库状态与模式 一、DM系统…

J1939广播DM1报文

一、DM1报文 1&#xff0c;SAE J1939-21&#xff08;参考5.2&#xff09;对CAN ID进行了重新划分&#xff0c;加上8个字节的数据域&#xff0c;构成了J1939 的协议数据单元(Protocol Data Unit, PDU)。 SAEJ1939-73&#xff08;参考5.7.1&#xff09;中定义了DM1的优先级为6&am…

J1939商用车在线诊断DM1报文

一、DM1报文简介和功能 1.1 DM1报文是Diagnostic Message 1, Active Diagnostic Trouble Codes (DTCs)缩写&#xff0c;由1939-73定义&#xff0c;具体参考其5.7.1&#xff1b; 1.2 实现诸如MIL灯、红色停机灯等点亮&#xff0c;并周期性播报控制器中处于激活状态的故障码。 二…

样本文件的使用方法以及注意事项

经常使用CHS零壹视频系列的朋友们应该对“样本文件”不陌生&#xff0c;在各种案例中我们也强烈建议在视频扫描时加载样本文件&#xff0c;而在视频修复时则样本文件成了必选项。今天我们来聊聊样本文件的作用和使用要求。 什么是样本文件&#xff1f; 从数据恢复广义的角度讲…

5.3.2 因特网的路由协议(二)基于距离向量算法的RIP协议

5.3.2 因特网的路由协议&#xff08;二&#xff09;基于距离向量算法的RIP协议 一、RIP协议概念 RIP是Routing Information Protocol缩写&#xff0c;又称为路由信息协议&#xff0c;是最先得到应用的内部网关协议&#xff0c;RIP作为一个常在小型互联网中使用的路由信息协议…

Java基础—变量与常量

1.变量 变量&#xff1a;可以变化的量。Java是一种强类型语言&#xff0c;每个变量在使用前必须先声明。Java变量是程序中最基础的存储单元&#xff0c;其要素包括变量名、变量类型和作用域。 type varName [value] [{,varName [value]}] 数据类型 变量名 值 int a,b,c; int d…