JavaScript如何上传文件到七牛云(上传视频显示进度条)

web前端直接上传七牛云服务器探索 之前做图片上传的时候,采用的方案是在js前端压缩成一大一小两张base64图片,然后上传到我们的服务器上,转换成为jpeg格式后上传到七牛图片服务器上。之所以一开始没有采用七牛提供的js直接上传到七牛服务器,主要是考虑图片的安全,后来研究了一下,发现七牛是有自己的安全机制的。采用token对每一张图片上传授权。从减小服务器流量的角度考虑,预研了一次七牛js上传七牛服务器。 阅读详情

背景

之前在后端上传视频到七牛云上,发现上传速度很慢,后来尝试直接在前端上传视频到七牛云上,最后实测发现快了很多。采用前端上传也减轻了服务器压力。

除了七牛云,当然也可以考虑阿里云对象存储oss

参考

七牛云存储示例:http://jssdk.demo.qiniu.io/

官方SDK:https://developer.qiniu.com/kodo/sdk/1283/javascript

swf文件下载SDK里面有

下载地址:https://github.com/qiniu/js-sdk/releases

步骤

视频上传

1、后台生成token字符串给前端:

pom文件引入

<!-- qiniu -->
<dependency>
   <groupId>com.qiniu</groupId>
   <artifactId>qiniu-java-sdk</artifactId>
   <version>[7.2.0, 7.2.99]</version>
</dependency>

QiNiuUtil工具类 

package com.jcmx.common.utils;

import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.FileInputStream;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.ZoneOffset;


public class QiNiuUtil {
    static Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);

    public static final String accessKey = "";//公钥
    public static final String secretKey = "";//秘钥
    public static final String bucket = "";//空间名
    public static final String path = "";//加速域名

    public static String uploadToken(FileInputStream file, String key) {
        Configuration cfg = new Configuration(Region.region0());//华东地区
        UploadManager uploadManager = new UploadManager(cfg);
        logger.info("path=" + path);
        try {
            Auth auth = Auth.create(accessKey, secretKey);
            String upToken = auth.uploadToken(bucket);
            System.out.println("token:"+upToken);
            //初始化时区对象,北京时间是UTC+8,所以入参为8
            ZoneOffset zoneOffset=ZoneOffset.ofHours(8);
            //初始化LocalDateTime对象
            LocalDateTime localDateTime=LocalDateTime.now();
            //获取LocalDateTime对象对应时区的Unix时间戳
            System.out.println(localDateTime.toEpochSecond(zoneOffset));
            Long e = localDateTime.toEpochSecond(zoneOffset);
            try {
                Response response = uploadManager.put(file, key, upToken, null, null);
                //解析上传成功的结果
                //DefaultPutRet putRet = JSON.parseObject(response.bodyString(), DefaultPutRet.class);
                DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
                logger.info("key:" + putRet.key);
                String encodedFileName = URLEncoder.encode(putRet.key, "utf-8");
                //获取下载地址
                /*String finalUrl1 = path+"/"+putRet.key;*/
                String finalUrl = String.format("%s/%s", path, encodedFileName);//七牛云公有空间
                String finalUrl1 = auth.privateDownloadUrl(finalUrl,e);//七牛云私有空间路径访问需给路径授权
                logger.info("访问地址:" + finalUrl1);
                return finalUrl1;
            } catch (QiniuException ex) {
                Response r = ex.response;
                System.err.println(r.toString());
                try {
                    System.err.println(r.bodyString());
                } catch (QiniuException ex2) {
                    //ignore
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    /**生成Token*/
    public static String getToken() {
        Auth auth = Auth.create(accessKey, secretKey);
        String upToken = auth.uploadToken(bucket);
        return upToken;
    }
}

生成token

//七牛Token
@GetMapping("/gettoken")
@ResponseBody
public Map<String,Object> uptoken(){
	Map<String,Object> resultMap = new HashMap<>();
	String token = QiNiuUtil.getToken();
	resultMap.put("uptoken",token);
	return resultMap;
}

2、编写前端代码:

导入JS文件(这里我就不贴代码了,通过七牛云存储示例F12就可以看到对应的JS和css,拷贝到自己的项目里就可以了)

这里我把自己整理的js传到了GitHub上了,下载地址:https://github.com/CAPTAIN-JIE/qiniuUpload.git


 

这是我整理后放到项目里的js目录

页面引入JS文件

<script th:src="@{/js/jquery.min.js}"></script>
<script th:src="@{/js/qiniu/ui.js}"></script>
<script th:src="@{/js/qiniu/qiniu.min.js}"></script>
<script th:src="@{/js/qiniu/highlight.js}"></script>
<script th:src="@{/js/qiniu/main.js}"></script>
<script th:src="@{/js/bootstrap.min.js}"></script>
<script type="text/javascript">hljs.initHighlightingOnLoad();</script>

引入css样式

<link th:href="@{/css/main.css}" rel="stylesheet"/>

Html页面上传视频按钮

<div class="form-group">
    <label class="col-sm-3 control-label">视频文件:</label>
    <div class="col-sm-8">
        <div class="tab-content">
	    <div role="tabpanel" class="tab-pane fade in active" id="demo" aria-labelledby="demo-tab">
	        <div class="row" style="margin-top: 20px;">
	            <div class="col-md-12">
	                <div id="container">
	                <a class="layui-btn" id="pickfiles" href="#" >
			    <i class="fa fa-cloud-upload"></i>
			    <span>选择文件</span>
	                </a>
	                <span class="lbl col-xs-10" style="height: 38px; line-height: 38px;">
		        <span class="red">请上传800M以内的MP4文件</span>
		        </span>
	            </div>
	            <button type="button" class="layui-btn" id="videoRevoke" style="display: none;">
	                <i class="fa fa-undo"></i>撤销视频
	            </button>
	        </div>
	        <div style="display:none" id="success" class="col-md-12">
                    <div class="alert-success">
		    队列全部文件处理完毕
	            </div>
	        </div>
	        <div class="col-md-12" >
		    <table id="uploadInfo" class="table table-striped table-hover text-left"   style="margin-top:40px;display:none">
		        <thead>
			    <tr>
			        <th class="col-md-4">Filename</th>
		                <th class="col-md-2">Size</th>
		                <th class="col-md-6">Detail</th>
			    </tr>
			    </thead>
			    <tbody id="fsUploadProgress">
			    </tbody>
		        </table>
		    </div>
	        </div>
	    </div>
        </div>
    </div>
</div>

 JavaScript编写

/*撤销视频*/
$('#videoRevoke').bind('click',function(){
    $("#container").css("display","block");
    $('#success').css("display","none");
    $('#videoRevoke').css("display","none");
    $('#video_url').remove();
    $('#fsUploadProgress>tr').remove();
})

通过隐藏标签获取上传视频路径传到后端保存到数据库

var resourcesUrl = document.getElementById("video_url").src;

到此上传视频的功能就完成了。

图片上传

下面贴上上传图片的方法(因为图片比较小,对速度影响不大,这里我是通过后端上传的图片)

1、前端代码编写:

Html页面上传图片按钮

<div class="form-group">
    <label class="col-sm-3 control-label">封面:</label>
    <div class="col-sm-8">
	<div class="layui-form-item" id="imageUp">
	    <input name="image_url" id="image_url" autocomplete="off" class="layui-input" type="hidden">
	    <button type="button" class="layui-btn" id="imageupload">
		<i class="fa fa-cloud-upload"></i>上传图片
	    </button>
	    <button type="button" class="layui-btn" id="imageRevoke">
		<i class="fa fa-undo"></i>撤销图片
	    </button>
	    <input class="layui-upload-file" type="file" accept="images" name="file">
	    <span class="lbl col-xs-10" style="height: 38px; line-height: 38px;display: block;">
	        <span class="red">请上传尺寸为750*440的图片!</span>
	    </span>
	    <p id="demoText1"></p>
	</div>
	<div class="layui-upload-list" id="previewBox">
	    <div class="imgBox">
		<img class="layui-upload-img" id="imgs">
	    </div>
	</div>
    </div>
</div>

JavaScript编写

/*撤销图片*/
$('#imageRevoke').bind('click',function(){
    var imgobj = document.getElementById('imgs');
    imgobj.removeAttribute('src');
    $("#imageupload").attr("disabled",false);
    $('#msg').css("display","none");
    var imageUrl = document.getElementById('image_url');
    imageUrl.removeAttribute('src');
})

<script>
    layui.use('upload', function(){
        var $ = layui.jquery
                ,upload = layui.upload;

        //上传图片
        var uploadInst =upload.render({
	    elem: '#imageupload'
	    ,url: '/app/informationTime/uploadImage'
	    ,field:"uploadImage"
	    ,choose: function(obj) {// 选择文件之后,提交文件之前,你想干什么?
	        obj.preview(function (index, file, result) {
	            if (file.size > 0) {// 判断文件大小
		        flag = true;
		        layer.msg("正在上传!");// 此段话,用来拖延用户点击提交按钮的时间,因为不知道covers是否返回
		    }
	        })
	    }
	    ,done: function(res) {
	        $('#image_url').attr("src",res.data);
	        $('#imgs').attr("src",res.data);
	        var demoText = $('#demoText1');
	        demoText.html('<span id="msg" style="color: #ff5722;" style="display: block;">上传成功!</span>');
	        $("#imageupload").attr("disabled",true);
	    }
	    ,error:function () {
	        //演示失败状态,并实现重传
	        var demoText = $('#demoText1');
	        demoText.html('<span id="msg" style="color: #FF5722;" style="display: block;">上传失败!</span> <a class="layui-btn layui-btn-mini demo-reload">重试</a>');
	        demoText.find('.demo-reload').on('click', function () {
	            uploadInst.upload();
		});
	    }
	});
    });
</script>

2、后台代码:

@ApiOperation(value = "上传图片")
@PostMapping("/uploadImage")
@ResponseBody
public Editor uploadImage(@RequestParam("uploadImage") MultipartFile multiple,         HttpSession session, HttpServletRequest request) throws IOException {
    if (multiple != null) {
	String [] str = upload(multiple);
	    return Editor.ResultUtil.success(str);
    }
	return Editor.ResultUtil.success();
}

public String [] upload(MultipartFile multiple){
    FileInputStream inputStream = null;
    try {
	inputStream = (FileInputStream) multiple.getInputStream();
	} catch (IOException e) {
	    e.printStackTrace();
	}
	String fileName = multiple.getOriginalFilename();
	String fileNameExtension = fileName.substring(fileName.lastIndexOf("."), fileName.length());
	String realName = String.valueOf(System.currentTimeMillis()) + ShiroUtils.getLoginName() + fileNameExtension;
	String path = QiNiuUtil.uploadToken(inputStream, realName);
	String [] str = {path};
	return str;
}

以上是js上传文件到七牛云上的步骤,欢迎大家提供好的建议!

七牛云 + esayui组件上传视频 最近项目中需要用到 因为发现很多坑 因此发出来分享一下 流程: 前台用户选择文件 前台请求上传文件的token 前台上传 将信息提交到后台保存 前台html文件 <input name="upload" id="file2" class="easyui-filebox" style="width:300px" required=true data-options="buttonTex... 阅读详情

相关推荐

tp5+layui上传视频至七牛云

进度条 <div class="layui-progress layui-progress-big" lay-showpercent="true" lay-filter="uploadProgress"> <div class="layui-progress-bar layui-bg-red" lay-percent="0%"></div> </div> js部分 $(function (){ //获取上传token,成功后初始化绑

weixin_45652385的博客 744

JS上传图片到七牛云

七牛云 js 实现

qq_19340721的博客 564

SAP CO实战:如何用KKA2/CJ88结果分析码搞定项目收入成本匹配(附真实案例)

本文深入探讨了SAP CO模块中KKA2和CJ88结果分析码在项目收入成本匹配中的高阶应用。通过真实案例解析,详细介绍了这两种分析码在分阶段收入确认和终验法项目中的配置技巧与实战经验,帮助财务人员高效解决复杂业务场景下的财务数据处理难题。

weixin_29230773的博客 168

uniapp调用七牛云api实现文件上传-node.js向外提供uploadToken的接口-客户端不用下载七牛云的包和SDK-发起网络请求直接上传(外加vue3+vantz组件库实现上传)

Qiniu 中的上传 Token 是在客户端生成,在客户端直接调用 API 上传文件时需要携带该 Token。下面是基本的生成方式。node.js向外提供uploadToken的接口-客户端不用下载七牛云的包和SDK-,拿到uploadToken发起网络请求直接上传文件即可。使用node.js向客户端提供uploadToken,客户端获取uploadToken后使用七牛云的api接口发起网络请求,上传文件;一、在unicloud云函数实现node.js获取uploadToken,然后向外提供一个接口。

厚积薄发. 3576

【5G全网建设】Option3X和Option2模式建安市、兴城市和四水市核心网、承载网网络设计与部署

拓扑规划: Option 3X网络拓扑图规划 Option 2网络拓扑图规划 设备部署: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 数据配置: 建安市核心网 建安市承载中心机房 建安市骨干汇聚机房 建安市3区汇聚机房 建安市C站点无线机房 兴城市核心网 兴城市承载中心机房 兴城市骨干汇聚机房 兴城市2区汇聚机房 兴城市B站点无线机房 业务调试

weixin_67183034的博客 8854

【SABRE 3D, SABRE 3DxT,LAM设备】2025年9月12日-生产期间维护用的双重隔离

生产期间维护用的双重隔离。该程序用于准备将一个或多个双工位设置为维护状态,同时SABRE 3D/3DxT/3D Scimitar保持生产运行。其目的是在不中断生产的情况下将双工位与运行中的设备隔离。

weixin_46735260的博客 574

前端如何上传图片到七牛云

From: https://www.jianshu.com/p/7520e0bee777 前端如何上传图片到七牛云 流程: 生成token => token和图片作为new FromData() 参数 再上传 token const accessKey = 'TSlScX_akS5TIpsXlkq*****7Efk-ZaZeg4ZWtta'; const secretKe...

weixin_30369041的博客 3494

最新扣子(coze)案例:在coze上用DeepSeek+私有数据库、知识库,创建你的专属智能体

Gartner预测,到2026年,70%的企业将通过Al知识库实现「组织记忆外化」。数字化时代,数据已成为企业发展的核心资产。我们通过人工智能将知识库从“静态存储"升级为“智能服务”。让"沉睡宝藏"焕发新生,助力企业突破数据困局。

weixin_72689845的博客 2164

七牛上传文件(JS实现)

写前的迷茫:在七牛官网实例中可以很正常的使用上传功能,但是将文件以及资源下载到本地就不能上传了,报“格式错误”、“媒体类型错误”等,也不知道是什么原因导致的。后来看了uptoken比较重要,自认为是那里的原因,但是具体是怎么回事还没弄明白。后经过师父指点,需要服务器提供uptoken,加之在七牛文档中心查阅了相关的上传设置,才知道uptoken是业务服务器返回到客户端以供上

因为热爱,所以付出 2万+

基于AXI PCIE IP的FPGA PCIE卡示意图

如果在上图中的AXI互联IP上再连接一个带AXI Slave接口的BRAM控制器,这个BRAM控制器连接一个BRAM,Host PC在系统主存中分配了一些不连续的内存,Host PC可以将这些内存段的起始地址(当然要先转为PCIE总线地址)写到AXI总线上的BRAM中,这样AXI CDMA读取BRAM,将读取到的PCIE总线基地址写到AXIPCIE寄存器块中的AXIBAR2PCIEBAR_n寄存器中,这样就实现了SG DMA。通过动态改变AXIBAR2PCIEBAR_n寄存器的值,可以实现多通道DMA。

csdn_gddf102384398的博客 1624

Framelet Transform

需要定义 Framelet 的基函数。Framelet 基函数可以是通过组合不同的小波函数生成的。# 这里可以定义 Framelet 基函数,例如一些小波基函数的线性组合# 这是一个示例函数,具体实现需要根据具体的 Framelet 设计# 示例:正弦函数。

qq_33009429的博客 1211

layui+七牛云实现上传文件显示进度条

首先:还需替换layui的upload模块的upload.js文件 下载地址:http://file.35youth.cn/index.php?share/file&user=1&sid=4VkDTZ8q 提取密码:4st5H <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>文件上传进度条</titl...

大海无量的博客 2327

RTX6000 PRO BLACKWELL 最优 CUDA 版本选择指南(适配 vLLM/SGLang 大模型推理)

本文针对NVIDIA Blackwell架构RTX6000PRO显卡部署vLLM/SGLang大模型推理引擎时的CUDA版本选择问题,提出专业建议。分析表明,CUDA12.9(需搭配552.06+驱动)是最优选择,因其完全支持BW架构特性,且与vLLM/SGLang最新版本深度适配。文章提供详细的Linux环境部署教程,包括驱动升级、CUDA12.9安装及vLLM/SGLang配置步骤,并指出CUDA13.0目前适配不完善,不推荐新手使用。最后给出常见问题解决方案,强调版本匹配对推理性能和稳定性的重要性。

2501_93651177的博客 681

前端页面上传文件到七牛云

使用场景:pc端上传图片和视频文件到七牛云,视频显上传进度条 参考七牛云JavaScript SDK:https://developer.qiniu.com/kodo/sdk/1283/javascript 1.安装 npm install qiniu-js 2.页面引入 import * as qiniu from "qiniu-js"; 3.主要代码 var token =...

Julie_Go的专栏 1321

华为OD机试真题 新系统2026-04-08 Python&JS 实现【配置操作失败数量统计】

模拟一个系统的命令行配置,包含添加、修改、删除三项操作,详情如下: 添加操作命令:add_rulerule_id=1rule_index = 18 修改操作命令: mod_rule rule_id= 1rule_index = 100 删除操作命令:del_rulerule_id=1

MISAYAONE的博客 586

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

七牛云上传图片和视频

七牛云上传图片和视频基于Vue框架使用七牛云 基于Vue框架使用七牛云 项目中引入 qiniu-js npm i qiniu-js -s npm i js-base64 -s // 引入bs64编码,文件名称可能会出现中文字符,编码后上传 // index import * as qiniu from "qiniu-js"; 在项目需要作用域中引入 bs64 let Base64 = ...

狗头的博客 1500

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

vue+七牛云上传视频文件

七牛云官方jssdk文档: https://developer.qiniu.io/kodo/sdk/javascript plupload第三方上传插件文档: http://chaping.github.io/plupload/doc/# 安装引入 // 下载qiniu-js npm install qiniu-js@1.X -D // 在页面中引入 import * as qiniu from 'qiniu-js' 功能简介 上传 html5 模式大于 4 M 时可分块上传,小于 4 M 时直传

weixin_50367873的博客 1141

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

elementUI:el-upload分片上传大视频到七牛云

elementUI:el-upload分片上传大视频到七牛云 使用el-upload请求方法的自定义 el-upload请求方法自定义官网的定义 七牛云官方的格式 详情看:七牛云JavaScript SDK 开始 其它的省略,就显示关于上传的部分 <el-upload ... :http-request="uploadHttpRequest" > uploadHttpRequest(option){ // 开始上传,token从后端获取, key自定义也可从后端获取(key可以说

So_cute_girl的博客 1569

视频电商网站视频上传准备:vue+七牛JSSDK集成(2)上传视频时显示进度条

前面我们在vue.js里继承了七牛云JSSDK, 完成了『上传文件』的基本。(我们选择了一张图片,瞬间上传到了七牛云上)。1、我们先准备html内容(我们用的是eleme-ui)<div> <el-progress :text-inside="true" :stroke-width="18" :percentage="0"> </el-progress> </div>2、vue.js

1984

vue 使用qiniu上传文件到七牛服务器(视频 文件 图片.) 带有真实进度条展示 切记下载最新版qiniu-js!!!!!!!!!!!!!!!!!

** 切记下载最新版qiniu-js!!! ** 需求效果 html代码 <div class="f2-sub_btn"> <van-button type="primary" block> <span>开始录制视频</span> <input type="file" accept="

weixin_43152108的博客 1077

element+vue文件分片上传七牛云

element+vue实现文件上传七牛云 ` 将文件拖到此处,或点击上传 {{buttonText}} `

xue_yz的博客 1068

vue+element-ui 七牛云分片上传

关于element-ui的el-upload,实际上issue中提到的次数也不少,很多初试者可能 get 不到愉快使用的点,提了issue之后又大多因为规范问题直接被机器人过滤或者关闭。例如最近一次相关的issue是想寻求关于http-request的使用,但也因为规范问题被直接关闭。所以我们就稍微做一个比较接地气的业务类分享。 0. 我们要什么? 这个问题就简单了:首先,我们需要一个好看的皮囊!那Vue基本没得选了,element-ui的el-upload很符合口味。其次,我们需要一个有趣的灵魂,我们

日常分享 1474

基于php+webuploader的大文件分片上传,支持断点续传,带进度条

基于php+webuploader的大文件分片上传,带进度条,支持断点续传(刷新、关闭页面、重新上传、网络中断等情况)。文件上传前先检测该文件是否已上传,如果已上传提示“文件已存在”,如果未上传则直接上传。视频上传时会根据设定的参数(分片大小、分片数量)进行上传,上传过程中会在目标文件夹中生成一个临时文件夹,用于存储临时分片,等所有分片上传完毕后,会根据序号重新组合成一个完整的视频,临时文件被删...

qq_25285531的博客 610

七牛云存储

文章目录介绍后端部分前端部分 介绍 七牛云存储是一个集图片、视频对象存储为一体的网站。并且他上面集成了cdn加速服务,图片处理(加水印,图片裁剪)等功能,对于一些想要快速开发产品,不想花大量时间来构建自己资源服务器的中小型公司而言,无疑是最好的选择。 后端部分 通过pip install qiniu即可下载七牛云的SDK 创建一个获取token的url # 七牛云获取token import ...

唯美清泠 302

js上传视频方法及监控进度

之前写过一篇关于图片上传的方法,不过那都是基于上传到本地服务器上的。跟视频有所不同,因为图片比较小并不考虑到并发量,所以性能这一块没有太多的在意。如上传视频就不同了,最小一般都在10M以上。如果并发同时多人上传的传。服务器带宽占满,站点访问就会出现各种问题,所以需要上传到第三方的云服务器上,今天我以七牛云为主。 做之前一样先规下思路。图片和视频都是从本地上传的。如果走HTML5的方法在本地执行也

Allure Love的博客 1698

vue 自定义分片上传到七牛云带进度条

前言 场景:vue环境,UI框架为Ant Design Ant Design中的Upload自带上传功能,但是当我上传超过1G的视频文件时,导致文件过大而超时 于是设置customRequest属性,通过覆盖默认的上传行为,可以自定义自己的上传实现 引入七牛SDK 直接使用静态文件地址:https://unpkg.com/qiniu-js@<version>/dist/qiniu.min.js 使用 NPM 安装 npm install qiniu-js, import * as qiniu

Rainy_X的博客 1463
上一篇: Springboot整合富文本编辑器wangEditor(上传文件到七牛云)
下一篇: Java实现微信(主、子商户模式)及支付宝支付
Auraiz
博客等级 码龄9年 48粉丝 6原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值