struts中使用org.apache.commons.fileupload

java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils 一个错误引发的血案 struts2-blank的所有 包 我新建了一个项目,还没有业务,只有web.xml配置,struts.xml的配置只是随便点···出了个错··· java.lang.NoClassDefFoundError: org/apache/commons/lang3/StringUtils 我出了这么一个错,不知道是什么包不对,还是哪里配置不对。于是我找错,我百度,有网友说是可能web.xml或包不够·····其中有个老兄说,把app 阅读详情

struts的DownloadAction使用后发现,当我提取中文名的文件时,会转换成乱码(弹出的对话框为乱码),可能还没有研究明白,所以考虑用smartupload和commons-fileupload。

使用smartupload上传过大文件,或者多文件的时候可能出现CPU或内存占用过高的问题.并且:只有重新启动容器才能恢复正常!后决定用用commons-fileupload.

下载:下载地址:http://jakarta.apache.org/site/downloads/downloads_commons-fileupload.cgi,包内包含了API文档.(还有commons-beanutils) 在项目中添加下载的组件。

注意事项:

1.不要在jsp页面中使用struts得标签,使用后,通过正常方式无法接收到相关参数。(不用<html:form>)

2.如果使用action,不要使action继承其他得action,仅仅继承org.apache.struts.action.Action;并且在配置文件中,不要给action配置actionForm,否则通过一下方法: 

         DiskFileUpload fu = new DiskFileUpload();

             // 设置最大文件尺寸,这里是4MB

             fu.setSizeMax(41943040);

             // 设置缓冲区大小,这里是4kb

             fu.setSizeThreshold(2048);

             // 设置临时目录:

             fu.setRepositoryPath(tempPath);

             // 得到所有的文件:

             List fileItems = fu.parseRequest(request);

             Iterator i = fileItems.iterator();

接收到得list是null。不关联actionform即可正常使用。

例子:

一。创建defalut.jsp

<%@ page language="java" pageEncoding="gb2312"%>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>

<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

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

<html:html lang="true">

<head>

<body>

 This a struts page.

 <br>

 <form action="/abc/default.do" method="post" name="uploadform"

  enctype="multipart/form-data">

  <br>

  文件1:

  <input name="file1" size="40" type="file">

  <br>

  文件2:

  <input name="file2" size="40" type="file">

  <br>

  <input name="upload" type="submit" value="开始上传" />

 </form>

</body>

</html:html>

二。创建FormfileAction 继承Action

import java.io.File;

import java.util.Iterator;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.commons.fileupload.DiskFileUpload;

import org.apache.commons.fileupload.FileItem;

import org.apache.commons.fileupload.FileUploadException;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

public class FormfileAction extends Action {

 public ActionForward execute(ActionMapping mapping, ActionForm form,

   HttpServletRequest request, HttpServletResponse response) {

  

  DiskFileUpload fu = new DiskFileUpload();

        // 设置最大文件尺寸,这里是4MB

        fu.setSizeMax(41943040);

        // 设置缓冲区大小,这里是4kb

        fu.setSizeThreshold(4000);

        // 设置临时目录:

        fu.setRepositoryPath("c:\\temp\\oo");

        // 得到所有的文件:

        List fileItems;

  try {

   fileItems = fu.parseRequest(request);

   Iterator iter = fileItems.iterator();

   while(iter.hasNext()){

     FileItem item = (FileItem) iter.next();

     if (!item.isFormField()) {

      String name = item.getName();

        long size = item.getSize();

        if((name==null||name.equals("")) && size==0)

         continue;

        System.out.println("file name:" +name);

        System.out.println("file size:" +size);

        name = name.replace(":","_");

        name = name.replace("\\","_");

        try {

      item.write(new File("F:\\"+ name));

     } catch (Exception e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

     }

     }

   }

  } catch (FileUploadException e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }

       

  System.out.println("execute");

  

  

  return null;

 }

 

}

三。配置struts-config.xml:

  <action

      path="/default"

      scope="request"

      type="com.yourcompany.struts.action.FormfileAction" />

 

【Unity】YooAsset与HybridCLR:高效资源管理与代码热更的黄金组合 本文深入探讨了Unity开发中YooAsset与HybridCLR的组合应用,为需要长期运营的项目提供了完整的资源与代码热更新解决方案。YooAsset作为高效的资源管理框架,简化了AssetBundle的打包、加载与热更流程;而HybridCLR则攻克了IL2CPP模式下C#代码无法热更的难题。两者结合,实现了从资源到逻辑的平滑在线更新,极大提升了开发迭代与线上维护的效率。 阅读详情

相关推荐

CKAD-CN 考试知识点分享(12) Secret - 1

步骤操作完成1提取 Deployment 中的硬编码 Secret 值✅2创建名为postgres的 Secret✅3修改 Deployment 使用引用 Secret✅4验证新 Pod 正常运行✅❌未删除原 Deployment✅(遵守要求)✅任务完成。敏感信息已从环境变量移出,安全地存储在 Kubernetes Secret 中。

轻的博客 632

JavaWeb简单案例——文件的上传

JavaWeb简单实例——简单介绍文件的上传和简单的示例

hssjsh的博客 800

保姆级教程:用MediaPipe和BlazePose在Python里实时追踪你的健身动作(附完整代码)

本文提供了一份详细的Python教程,教你如何使用MediaPipe和BlazePose实现实时健身动作追踪。从环境配置、模型选型到实时视频流处理架构设计,再到健身动作量化分析和可视化反馈系统优化,教程涵盖了完整的实现步骤和代码示例,帮助开发者快速构建高效的姿态特征点检测系统。

weixin_42531779的博客 153

Apache Commons FileUpload maven依赖

Apache Commons是一个专注于可重用Java组件的所有方面的 Apache 项目。Apache Commons项目由三个部分组成:Commons Proper - 可重用Java组件的存储库。The Commons Sandbox - 用于Java组件开发的工作区。The Commons Dormant - 当前不活动的组件存储库。

沧笙踏歌的博客 3780

告别代码移植烦恼:STM32CubeMX 6.4.0 + STM32F407ZGT6 + YT8512C PHY芯片的LWIP网络配置全攻略

本文详细介绍了如何使用STM32CubeMX 6.4.0配置STM32F407ZGT6与YT8512C PHY芯片的LWIP网络适配,包括硬件特性解析、STM32CubeMX基础配置、专用驱动适配和LWIP协议栈定制化配置,帮助开发者解决PHY芯片差异导致的网络问题。

weixin_28718793的博客 290

Deeplabcut实战:从数据标注到行为分析的全流程解析

本文详细解析了Deeplabcut从数据标注到行为分析的全流程实战技巧,包括项目创建、配置文件定制、智能帧提取、高效标注方法、模型训练优化以及多视角融合等高级应用。通过具体案例和实用参数配置,帮助研究者快速掌握这一行为分析工具,提升实验效率和准确性。

weixin_29057163的博客 246

org.apache.commons.fileupload的使用

Using FileUpload 使用FileUpload FileUpload can be used in a number of different ways, depending upon the requirements of your application. In the simplest case, you will call a single method to parse th

winki7的专栏 5912

CloudCompare

分割点云:选中要分割的点云文件–>Segment–>左键框出要分割的点或者区域–>Segment Out–>Comfirm Segmentation,原点云文件被分割成两个结构,选中分割出来的remaining,右键delete即可。qSRA (Surface of Revolution Analysis):计算一个点云和一个假定旋转平面之间的距离(旋转平面用2D轮廓定义),距离计算好后,用户可以创建一个偏差的2D图或者圆柱或圆锥的投影。②表现为同样的对象或者至少有同样的形状。

xiaoyaolangwj的博客 4709

使用 Apache的文件上传组件(common-fileupload)来实现文件的上传

文章目录一、前言/先导二、步骤三、源码四、测试结果 一、前言/先导 maven的依赖: 注意:common-fileupload,它需要依赖于 commons-io组件; <dependencies> <!--servlet的依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>s

✈ 正在努力 の 寒江(StudiousTiger) ✌ 呐 ✈ 5489

NVIDIA DGX Spark (Ubuntu 24.04) 部署Isaac Sim与Isaac Lab:二进制安装与ROS2集成实战

本文详细介绍了在NVIDIA DGX Spark工作站(Ubuntu 24.04系统)上,通过预编译二进制包稳定部署Isaac Sim与Isaac Lab的完整实战流程。文章重点剖析了二进制安装相较于源码编译和pip安装的优势,有效规避了CUDA、PyTorch等关键组件的版本冲突陷阱,并逐步指导完成环境配置、Isaac Lab集成、Conda环境管理以及ROS2 Jazzy的集成,最终构建出完整的机器人仿真与强化学习开发平台。

kite3的博客 396

【ROS2】机械臂MoveIt2

navigation2 专注于移动机器人的导航与定位,处理大范围空间的底盘运动;MoveIt2 专注于机械臂的操作规划,处理多关节协同的末端执行器运动。在复合机器人(如,移动机械臂)navigation2 负责移动到目标区域,MoveIt2 负责机械臂抓取。官网:https://moveit.picknik.ai/main/index.html。

郭老二 596

Struts2中文件过大上传失败问题解决方案org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException

 在上传94M的视频出现异常如下:[@APPNAME@] ERROR [http-80-3] MultiPartRequest.parse(130) | org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (10214

每天=生命的最后一天 1万+

执行任务赚积分

接下来N行,每行两个空格分隔的整数(SLA和V),SLA表示任务的最晚处理时间,V表 示任务对应的积分。每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。第2个时间单位内,处理任务4,获得5个积分。输入描述:第一行为一个数N,表示有N个任务,1

面试高手的博客 4694

java.lang.NoClassDefFoundError:org / apache / commons / fileupload / FileUploadException

问题 在Struts框架中,在文件上传过程中遇到以下异常。 javax.servlet.ServletException: Servlet execution threw an exception root cause java.lang.NoClassDefFoundError: org/apache/commons/fileupload/FileUploadException ...

一名可爱的技术搬运工 1285

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

使用struts相关组件上传附件(org.apache.commons.fileupload.*)上传附件--详解

       文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件上传功能。      common-fileupload组件是apache的一个开源项目之一,可以从apache上下载。用该组件可实现一次上传一个或多个文件,并可限制文件大小。http:/

soltex的专栏 2404

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

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

Struts2上传文件报错Unable to parse request org.apache.commons.fileupload.FileUploadBase$IOFileUploadExcept

Struts2上传文件报错Unable to parse request org.apache.commons.fileupload.FileUploadBase$IOFileUploadExcept 已经有位前辈在这里说过问题了.

kiraHAHA的专栏 1926

java jxl生成报表_JXL组件生成报表报错(一)

JXL组件生成报表1、具体报错如下usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help | start | stop }2014-5-3 17:14:13 org.apache.catalina.core.AprLifecycleListener init信息: ...

weixin_32139169的博客 99

ava.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils...

错误: Exception starting filter struts2 java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils... 可能是缺少commons-lang-x.x.jar和commons-fileupload-x.x.x.jar包

lirenyou的博客 633

用struts 的FormFile上传时遇到的问题 Exception loading sessions from persistent storage

 用struts 上传得时候用到了org.apache.commons.fileupload包   当上传一个文件后 把tomcat关闭 再重新打开的时候就抱  Exception loading sessions from persistent storage  后面说org.apache.commons.fileupload.DeferredFileOutputStream 未序列化 。

每天进步一点点 -- sariy 1250

struts2.0上传文件异常

struts2.0上传文件异常:Unable to load bean org.apache.struts2.dispatcher.multipart.MultiPartRequest 。   解决:在struts2.0的发行包中的showcase例子中有上传的例子,里边提供了 common-fileupload-1.1.1.jar,commons-io-1.1.jar包,直接拿过来使用就好...

mrzhangtufu2的专栏 275

常用JSP文件上传,下载的一些方法

原理是在Actionform中定义一个FormFile类型的属性file,这个类型是struts所提供的包中的对象——“org.apache.struts.upload.FormFile”,并在jsp中加入html:file标签,当提交表单后,该标签会把用户所选择上传的文件的放入file中。文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,下面我介绍几种有关文件上传组件。能将文件上传到数据库中,也能将数据库中的数据下载下来。

weixin_52041354的博客 608

(转)常用JSP文件上传,下载的一些方法

文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,下面我介绍几种有关文件上传组件。 [b]一. 基于org.apache.struts.upload.FormFile的文件上传。[/b]这种方法相对比较简单。原理是在Actionform中定义一个FormFile类型的属性file,这个类型是struts所提供的包中的对象...

小虫一两只 160

struts2 2.3.1.1启动异常原因

Exception starting filter struts2 java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils 2012-01-22 23:07 Exception starting filter struts2 java.lang.NoClassDefFoundError: org/ap...

gzg0142的博客 170
上一篇: commons.FileUpload的使用
下一篇: EL表达式语言
飞飞的魔毯小窝
博客等级 码龄14年 12粉丝 735原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值