COS 文件上传事例

SpringBoot整合腾讯云COS对象存储实现文件上传 SpringBoot整合腾讯云COS对象存储实现文件上传及预览效果,市场主流厂商有:七牛云、阿里云OSS、腾讯云COS等,具体采用哪种存储方案需结合项目、规模、成本等因素,综合考量确定。 阅读详情
 

COS 文件上传

Cos组件是O`Rrilly公司开发的一款免费组件。在项目实施中,本人也确实能感觉COS组件在上传速度有着明显的优势,所以有必要来学习一下COS的相关用法。

COS的帮助文档如下图所示。

在Cos组件中,MultipartRequest类主要负责文件上传的处理。MultipartRequest有8个构造函数:

1.Public MultipartRequest ( HttpServletRequest request, String saveDirectory,) throws IOException

 

2.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize) throws IOException

 

3.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, FileRenamePolicy policy) throws IOException

 

4.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, String encoding) throws IOException

 

5.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize, String encoding, FileRenamePolicy policy) throws IOException

 

6.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, String encoding) throws IOException

 

7.Public MultipartRequest ( HttpServletRequest request, String saveDirectory) throws IOException

 

8.Public MultipartRequest ( HttpServletRequest request, String saveDirectory, int maxPostSize) throws IOException

 

前6种构造函数都是用来专门处理HTTP协议的,saveDirectory是上传文件要存储在服务器端的目录名称;maxPostSize是用来限制用户上传文件大小的,若超过maxPostSzie,会产生IOException,默认上传文件大小是1MB;encoding可以设定用何种编码方式来上传文件名称,可以解决中文问题。

MultipartRequest类工具有8种方法,利用这些方法,我们可以取得请求的相关信息:

Public Enumeration getParameterNames() 可以取得请求参数的名称

public String getParameter(String name)  此方法传回参数为name的值

public String[] getParameterValues(String name) 此方法主要用在取得当一指定参数具有多个值时,它会传回String的数组

public Enumeration getFileName() 传回所有文件输入类型的名称

public String getFilesystemNames(String name) 用此方法得到上传文件的真正的文件名,这里的name指文件输入类型的名称

public String getContentType(String name) 此方法得到上传文件的内容类型

public File getFile(String name) 此方法得到一个文件对象,代表储存在服务器上的name文件

public String getOriginalFileName(String name) 返回文件在修改政策有效之前的文件名

COS组件的应用:

 

下面,我们通过一个上传文件的小程序来演示用COS组件上传文件的应用;

一;建一个名为upFile的工程:在WeRoot目录下创建两个页面,分别为upFile.html(上传页面)、Uplad.jsp(处理结果页面)

二;导入 Cos.jar 包: 把Cos.jar包导入lib目录下。

 

三;编写页面和业务代码;

1,上传页面的upFile.html程序清单;

<html>

  <head>

    <title>文件上传首页</title>

  </head> 

  <body bgcolor="#aaccbb">

  文件上传:

  <hr/>

  <form action="upland.jsp" method="post" enctype="multipart/form-data">

  <input type="file" name="file1"><br/>

  <input type="file" name="file2"/><br/>

  <input type="file" name="file3"/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

  <input type="submit" value="上传"/> 

  </form> 

  </body>

</html>

上传后页面Upland.jsp代码清单;

<%@ page  import="java.util.*" contentType="text/html; charset=gbk" %>

<%@ page  import="java.io.*"%>

<%@page import="com.oreilly.servlet.multipart.*"%>

<%@page import="com.oreilly.servlet.*" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head >   

    <title>上传文件</title>

    <%

    //黄河之水哪里去,文件保存在何处?注意:这个文件夹一定要先创建,否则会抛出、、//IllegalArgumentException异常

    String fileDirectory = "c://haha";

    //设置文件的最大值为500M,在这里有三个文件,上传时是按字节计算的,所以上传的文件最大值为;

    int fixMax = 3 * 500 * 1024 * 1024 ;

    //设置response 的编码为gbk; ,同时采用缺省的文件名冲突解决策略,实现上传

MultipartRequest multi = new MultipartRequest(request,fileDirectory,fixMax,"gbk");

    //到这里上传文件完成,为了显示上传后的结果,我们用Enumeration返回上传的信息

    //输出反馈信息;

    Enumeration enums = multi.getFileNames();

    while(enums.hasMoreElements()){

      System.out.println("hahah");

      String fileName = (String)enums.nextElement();

      File file = multi.getFile(fileName);

      if(file!=null){

            String name = multi.getFilesystemName(fileName);

            String lastName = fileDirectory +"//"+ name;

            out.print("文件已成功上传到:"+lastName+"<hr>");           

      }     

    }

     %>

  </head> 

  <body bgcolor="#aaccbb">

 <h3>my file up success !</h3>

  </body>

</html>

 

现在我们可以打开c:/haha文件夹,查看文件

 

问题??

1,    如何把上传的文件放在当前工程的某个文件夹下面,如放置在WebRoot/files下面

2,    在具体问题中,往往是把上传的文件保存在指定的文件夹下,而在数据库中只保存文件的地址。但这样,又如何获取表单中的其他文本框的值呢?如 text , reado , passeord 等的值,然后把他们的值和文件的路径一起保存到数据库中。

解决方案1),改变提交的流程。具体分析如下图(略)

  文件域的属性改变成了普遍的文本框,同时多添加了一个上传文件的普通按钮,index.jsp就成了普通的表单提交页面了,点击上传文件按钮,将在新窗口中弹出上传文件的页面go.jsp 。在这个页面中有原来的文件域,它提交给upland.jsp页面处理,处理后把文件上传的地址放入session中,转发给首页提交页面,然后在提交页面上获取session中的值,即文件的地址,然后提交到数据库中存储起来,这言就完成了文件的上传和数据的提交。

     以上三个页面中的关键代码如下;

Index.jsp源码;

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

<html>

    <head>

       <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

       <title>文件上传首页</title>

       <script language="javascript">

    function upload()

    {  

      var go = "go.jsp"

     var oawin=  window.open(go,"hahah", "toolbar=0,location=0,status=0,menubar=0,scrollbars=no,resizable=0,width=200,height=120,");

     oawin.focus();

    oawin.opener=window;

    }

</script>

    </head>

    <body bgcolor="#aaccbb">

       <%

           String file = (String) session.getAttribute("file");

           if (file == null)

              file = "";

       %>

       文件上传:

       <hr />

       <form action="upland.jsp" method="post" enctype="multipart/form-data">

           <input type="test" name="name" />

           :username

           <br>

           <input type="test" name="files" id="files" value="<%=file%>" />

           <label>

              <input name="按钮" type="button" onclick="upload()" value="上传文件" />

           </label>

           <br>

           <br />

           &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

           <input type="submit" value="上传" />

       </form>

    </body>

</html>

Go.jsp源码;

<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>上传文件页</title>

</head>

<body>

<h2>请选择你要上传的文件!</h2>

<form action="upland.jsp" method="post" enctype="multipart/form-data" name="form1" id="form1">

  <label>

  <input type="file" name="fileField" id="fileField" />

  </label>

    <input type="submit" name="button" id="button" value="确定" />

</form>

<p>&nbsp;</p>

<p>&nbsp;</p>

</body>

</html>

 

 

 

 

 

<%@ page import="java.util.*" contentType="text/html; charset=gbk"%>

<%@ page import="java.io.*"%>

<%@page import="com.oreilly.servlet.multipart.*"%>

<%@page import="com.oreilly.servlet.*"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

 

       <title>上传文件</title>

       <%

           //上传的文件保存在何处?注意:这个文件夹要先创建

           // fileDirectory = "c://haha";

           String path = request.getRealPath("files");

           System.out.println(path);

           //设置文件的最大值为500M,在这里有三个文件,上传时是按字节计算的,所以上传的文件最大值为;

           int fixMax = 500 * 1024 * 1024;

           //设置response 的编码为gbk; ,同时采用缺省的文件名冲突解决策略,实现上传

           MultipartRequest multi = new MultipartRequest(request, path,

                  fixMax, "gbk");

           //输出反馈信息;

           Enumeration enums = multi.getFileNames();

           while (enums.hasMoreElements()) {

              String fileName = (String) enums.nextElement();

              File file = multi.getFile(fileName);

              if (file != null) {

                  String name = multi.getFilesystemName(fileName);

                  String lastName = fileDirectory + "//" + name;

                  session.setAttribute("file", lastName);

                  request.getRequestDispatcher("index.jsp").forward(request,

                         response);

              }

 

           }

       %>

    </head>

 

    <body bgcolor="#aaccbb">

       <h3>

           my file up success !

       </h3>

    </body>

</html>

 

提交后又回到登陆页面index.jsp页面, 

-------------------------------------- 

问题请教:上传文件时的不完整性如何解决比较好?比如我要上传一张图片,上传的这张图片包括图片的一些相关说明信息。通常,我们是先把图片上传到服务器后,再填写相关的信息,然后把这些信息持久化到数据库,但是,如果用户只上传了图片,因为某种原因,图片的其他信息未能填写,之后也就没有再来管他,这图片就成了垃圾图片。!!像这样的问题,如何解决呢?

 

小程序COS文件上传 官网地址注意!!!谨慎使用此方法,cos-wx-sdk-v5.min.js体量大约有200KB,似乎不支持分包(之前用uni-app使用分包导入,不知道什么原因最后还会归为主包。导致主包过大,小程序无法上传的问题)若大家的代码可能也会出现上述情况,可以转战:uni-app/微信的COS直传,这是一种不需要引入COS的SDK,进行COS上传的方法。 阅读详情

相关推荐

【代码可复用!】腾讯云 COS 对象存储管理与文件上传封装

使用CosManager和类的前提是开通腾讯云对象存储(COS)和数据万象(CI)服务,并完成相关配置。通过合理的设计和封装,您可以轻松实现文件的上传、下载、处理等功能,提升开发效率并降低维护成本。希望本文的详细说明能帮助您顺利使用腾讯云 COS 和 CI 服务,并为您的项目提供高效稳定的文件管理能力。通过CosManager和两个类的封装,我们实现了对腾讯云 COS 服务的统一管理,简化了文件上传和处理的流程。这种设计不仅提高了代码的复用性,还增强了系统的可维护性和安全性。

web2u的博客 1566

COS文件上传和下载

COS官网:http://www.servlets.com/cos/ 上传使用:MultipartRequest类,  FileRenamePolicy类用于设置上传文件的命名规则(如:避免文件重复可以设置时间戳为文件名) MultipartRequest mulit = new MultipartRequest(request, root, fileMaxSize, "UTF-8", r

sunyanchao33的专栏 2544

Java文件上传组件COS源码剖析与实践

本文还有配套的精品资源,点击获取 简介:本源码项目专为腾讯云对象存储服务(COS)设计,旨在简化Java应用中文件上传过程。开发者可以利用这一组件,安全且高效地将文件上传到云端,享受COS提供的高可用和高扩展性存储优势。包含详细的许可证协议、使用文档以及源代码目录,是Java开发者学习云服务集成的宝贵资源。 1. Java文件上传组件COS的介绍 1.1 C...

weixin_28809949的博客 1066

腾讯云cos python自动上传

【代码】腾讯云cos python自动上传

lead_cai的博客 449

腾讯云COS文件上传实践指南

在数字化时代,内容分发网络(CDN)和对象存储服务(OSS)成为了企业和开发者快速部署和分发内容的重要工具。腾讯云的COS(Cloud Object Storage)作为国内领先的云存储服务之一,提供了可靠、安全、高速的存储解决方案。本章将为大家简要介绍COS文件上传的基本概念、应用场景以及它的重要性。存储桶(Bucket)是腾讯云对象存储(COS)的基本管理单元,可以理解为一个文件夹,用于存储多个对象(文件)。在COS中,每个存储桶具有一个全局唯一的名称,并且存储桶的名称一旦确定后,将无法更改。

weixin_42596246的博客 2820

腾讯云COS文件上传实战:Java示例源码解析

腾讯云对象存储服务(COS)为用户提供了一个稳定、安全、高效、可扩展的云存储服务。用户可以利用该服务存储和访问任意类型的数据,包括但不限于图片、视频、日志文件、备份数据等。它提供了丰富的API接口,支持管理存储桶和对象,并且可以轻松地与腾讯云其他产品进行集成,如内容分发网络CDN、云数据库、大数据分析和机器学习等服务。腾讯云COS服务支持多种存储类别,如标准存储、低频访问存储和归档存储等,以满足用户不同场景的存储需求。

weixin_36204513的博客 932

Cos 文件上传下载

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

m0_63064861的博客 981

COS框架实现上传稍加修改即可实现多文件上传

COS框架实现上传,稍加修改即可实现多文件上传,希望各位采纳

【文件上传】使用腾讯云COS实现文件上传

大家好,我是jstart千语。今天记录一下如何使用腾讯云的COS来实现文件上传。文件上传有很多家的产品都可以做,比如阿里云的OSS,还有开源的minio,大家都可以去研究研究。今天主要来讲腾讯的COS,因为它有一个数据万象的功能,可以帮我们解析文件,很是方便。本篇主要演示上传图片的示例。

m0_74289770的博客 3304

COS多文件上传

使用COS之间实现文件上传

eDP/DP接口简介

目前,在视频传输协议以及接口领域,外部接口主要是DP与HDMI两分天下,当然之前出现过很多接口-VGA, DVI等等,最新平台基本以这两个为主;笔记本内部接口就基本上使用eDP((Embedded Display Port))作为标准接口来驱动液晶屏了。那么问题来了,eDP和DP,是完全兼容的么?eDP,DP,HDMI,这三种接口的显示器,可以插在同一个接口上使用么?这篇文章,就会从硬件和一部分协议的角度分析一下这三大协议。

weixin_50518899的博客 2万+

SpringBoot 文件上传至腾讯云COS

今天主要分享一下 如何使用 springBoot 上传文件到 腾讯云对象存储COS。购买COS我就不讲了,插一嘴哈 对于个人而言第一次购买 腾讯云是有福利的(传送门)。 引入 腾讯云存储依赖 <dependency> <groupId>com.qcloud</groupId> <artifactId>cos_api</artifactId> <vers

qq_44136551的博客 3937

小白学习图像处理6——Canny边缘检测算法原理

目录结构一、高斯滤波二、梯度计算1、原理2、代码如下三、非极大值抑制三、双阈值检测四、matlab 的 edge函数五、总结 Canny边缘检测算法主要步骤:高斯滤波、梯度计算、非极大值抑制和双阈值检测。 一、高斯滤波   使用高斯滤波的目的是平滑图像,滤除图像中的部分噪声(因为微分算子对噪声很敏感)。高斯滤波具体办法是生成一个高斯模板,使用卷积进行时域滤波: img = im2double(im...

我有两颗糖 7791

腾讯云 COS 实现文件上传下载以及批量上传文件至cos存储桶(全球加速)

随着云计算技术的不断发展,越来越多的应用开始将文件存储托付给云端,而腾讯云 COS 作为一款高效、安全且稳定的对象存储服务,成为了众多开发者的首选。无论是个人项目还是企业级应用,腾讯云 COS 都能提供强大的支持。本文将介绍如何通过腾讯云 COS 实现文件上传下载功能,提升用户体验,让上传过程变得更加透明和友好。

第五季永生花-的博客 2930

3DE重客户端安装

3DE重客户端安装

m0_48170265的博客 9425

深入解析DDR5 SDRAM中的CA训练模式(CATM):原理与实现

本文深入解析DDR5 SDRAM中的CA训练模式(CATM),详细探讨其工作原理与实现方法。通过分析JESD79-5标准,揭示CATM在时序校准、信号质量优化和系统稳定性方面的核心价值,并提供硬件设计考量和系统级调试技巧,帮助工程师解决高速内存系统中的信号完整性问题。

weixin_29235923的博客 383

cos文件上传

 COS这个文件上传组件可以说在几个开源的上传文件组件中性能是非常优秀的,上传速度很快(相比fileUpload,smart等组件),但在使用Struts2结合COS文件上传时要注意Struts2实现了自己的MultiPartRequest,这个过滤后的request是不认COS的。 COS相比其它上传文件组件而言,除了具有速度优势外,其使用的便携性是非常好的,一两句简单地代码就搞定...

woshixushigang的专栏 1171

禅道二次开发(一):从零搭建本地开发与调试环境

本文详细介绍了禅道二次开发的第一步:从零搭建本地开发与调试环境。通过部署官方一键安装包、配置端口与防火墙、连接数据库、设置Samba文件共享,并最终在VSCode中配置PHP智能感知与Xdebug调试,手把手教你建立一个隔离、高效的专属开发工作台,为后续的代码修改与功能扩展奠定坚实基础。

weixin_29003437的博客 321

纯前端实现腾讯cos文件上传功能

前言 在前端开发中文件上传是经常会遇到的,并且多数情况会使用第三方平台来存储文件,腾讯云cos是我们常用的。本篇文章就是带我从前端的角度实现腾讯云COS存储。本文参考了腾讯云COS开发文档 JavaScript SDK 步骤 安装腾讯云COS上传所需的sdk 下载cos-js-sdk-v5.min.js并引入index.html 监听文件上传组件 //监听文件变化 document.ge...

pro_monkeyking的博客 4041

技术解析:ChangeFormer——基于Transformer的孪生网络在遥感变化检测中的创新应用

本文深入解析了ChangeFormer模型在遥感变化检测中的创新应用,该模型基于Transformer架构和孪生网络(Siamese Network),显著提升了变化检测的精度和效率。通过详细的技术实现和实战经验分享,展示了其在建筑物变化、森林监测等场景中的卓越表现,为相关领域的研究和应用提供了有力工具。

weixin_29102619的博客 496

如何用Python编程实现算术割圆术?

第10章 割圆术 Python编程要点 from … import …语句 math模块的sqrt()函数 round()函数 10.1 图解九章 {:–}觚( gū ):正多边形。“六觚”即正六边形,“十二觚”即正十二边形。 图10-1 六觚、十二觚、二十四觚 提示 图10-1所示由图解九章源码中的“图解割圆术.py”自动绘制而成,我们可运行脚本文件,查看动态的绘制过程。 割六觚以...

人邮异步社区 3237

Java--实现cos文件上传

bucket区域

fan___的博客 2709

45、概率与模糊性:粗糙事件与模糊事件概率的探索

本文探讨了概率理论与模糊性理论在处理现实世界不确定性中的应用,重点分析了模糊事件和粗糙事件的概率定义、性质及其条件概率。同时,介绍了近似贝叶斯网络分类器在信息系统中的应用,以及如何通过概率决策约简提高分类效率。这些方法为处理不确定信息提供了灵活的工具,并在决策和数据分析中具有重要价值。

ik67890123的博客 133

Java接入腾讯云COS 实现文件上传

1、POM依赖 <!--腾讯云COS--> <dependency> <groupId>com.tencentcloudapi</groupId> <artifactId>tencentcloud-sdk-java</artifactId> ...

月月鸟yyNiao 5634

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: jsp子父窗体之间如何传值
下一篇: 网上书店
luojs_java
博客等级 码龄18年 2粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值