• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# DownloadFileButton
2
3下载文件按钮,通过点击该下载按钮,可以获取到当前应用在Download公共目录中所属的存储路径。
4
5
6> **说明:**
7>
8> 该组件从API Version 12开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
9>
10> 该组件不支持在Wearable设备上使用。
11
12##  导入模块
13
14```
15import { DownloadFileButton } from '@kit.ArkUI'
16```
17
18## 子组件
19
2021
22## 属性
23
24支持[通用属性](ts-component-general-attributes.md)。
25
26## DownloadFileButton
27
28下载文件按钮组件,默认显示图标和文字。
29
30**装饰器类型:**@Component
31
32**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
33
34**系统能力**: SystemCapability.ArkUI.ArkUI.Full
35
36| 名称           | 类型                                              | 必填 | 装饰器类型 | 说明                             |
37| -------------- | ------------------------------------------------- | ---- | ---------- | -------------------------------- |
38| contentOptions | [DownloadContentOptions](#downloadcontentoptions) | 是   | @State     | 创建包含指定元素内容的下载按钮。 |
39| styleOptions   | [DownloadStyleOptions](#downloadstyleoptions)     | 是   | @State     | 创建包含指定元素样式的下载按钮。 |
40
41## DownloadContentOptions
42
43下载文件按钮中显示的内容。
44
45**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
46
47**系统能力**: SystemCapability.ArkUI.ArkUI.Full
48
49| 名称 | 类型                                                         | 必填 | 说明                                                         |
50| ---- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
51| icon | [DownloadIconStyle](#downloadiconstyle) | 否   | 设置下载按钮的图标风格<br/>不传入该参数表示没有图标,icon和text至少存在一个。 |
52| text | [DownloadDescription](#downloaddescription) | 否   | 设置下载按钮的文本描述<br/>不传入该参数表示没有文字描述,icon和text至少存在一个。 |
53
54## DownloadStyleOptions
55
56下载文件按钮中图标和文字的样式。
57
58**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
59
60**系统能力**: SystemCapability.ArkUI.ArkUI.Full
61
62| 名称            | 类型                                                         | 必填 | 说明                                                         |
63| --------------- | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
64| iconSize        | Dimension                                                    | 否   | 下载控件上图标的尺寸,不支持百分比。<br/>默认值:16vp                      |
65| layoutDirection | [DownloadLayoutDirection](#downloadlayoutdirection) | 否   | 下载控件上图标和文字分布的方向。<br/>默认值:DownloadLayoutDirection.HORIZONTAL |
66| fontSize        | Dimension                                                    | 否   | 下载控件上文字的尺寸,不支持百分比。<br/>默认值:16fp                      |
67| fontStyle       | FontStyle                                                    | 否   | 下载控件上文字的样式。<br/>默认值:FontStyle.Normal          |
68| fontWeight      | number \| FontWeight \| string                               | 否   | 下载控件上文字粗细,number类型取值[100, 900],取值间隔为100,默认为400,取值越大,字体越粗。string类型仅支持number类型取值的字符串形式,例如"400",以及"bold"、"bolder"、"lighter"、"regular"、"medium",分别对应FontWeight中相应的枚举值。<br/>默认值:FontWeight.Medium           |
69| fontFamily      | string \| Resource                                           | 否   | 下载控件上文字的字体。<br/>默认字体:'HarmonyOS Sans'        |
70| fontColor       | ResourceColor                                                | 否   | 下载控件上文字的颜色。<br/>默认值:#ffffffff                 |
71| iconColor       | ResourceColor                                                | 否   | 下载控件上图标的颜色。<br/>默认值:#ffffffff                 |
72| textIconSpace   | Dimension                                                    | 否   | 下载控件中图标和文字的间距。<br/>默认值:4vp                 |
73
74## DownloadIconStyle
75
76下载文件按钮中图标的风格。
77
78**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
79
80**系统能力**: SystemCapability.ArkUI.ArkUI.Full
81
82| 名称        | 值   | 说明                       |
83| ----------- | ---- | -------------------------- |
84| FULL_FILLED | 1    | 下载按钮展示填充样式图标。 |
85| LINES       | 2    | 下载按钮展示线条样式图标。 |
86
87
88
89## DownloadDescription
90
91下载按钮中文字的内容。
92
93**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
94
95**系统能力**: SystemCapability.ArkUI.ArkUI.Full
96
97| 名称                | 值   | 说明                             |
98| ------------------- | ---- | -------------------------------- |
99| DOWNLOAD            | 1    | 下载按钮的文字描述为“下载”。     |
100| DOWNLOAD_FILE       | 2    | 下载按钮的文字描述为“下载文件”。 |
101| SAVE                | 3    | 下载按钮的文字描述为“保存”。     |
102| SAVE_IMAGE          | 4    | 下载按钮的文字描述为“保存图片”。 |
103| SAVE_FILE           | 5    | 下载按钮的文字描述为“保存文件”。 |
104| DOWNLOAD_AND_SHARE  | 6    | 下载按钮的文字描述为“下载分享”。 |
105| RECEIVE             | 7    | 下载按钮的文字描述为“接收”。     |
106| CONTINUE_TO_RECEIVE | 8    | 下载按钮的文字描述为“继续接收”。 |
107
108
109
110## DownloadLayoutDirection
111
112下载文件按钮中图标和文字的排列方式。
113
114**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。
115
116**系统能力**: SystemCapability.ArkUI.ArkUI.Full
117
118| 名称       | 值   | 说明                                       |
119| ---------- | ---- | ------------------------------------------ |
120| HORIZONTAL | 0    | 下载控件上图标和文字分布的方向为水平排列。 |
121| VERTICAL   | 1    | 下载控件上图标和文字分布的方向为垂直排列。 |
122
123## 事件
124
125支持[通用事件](ts-component-general-events.md)。
126
127##  示例
128
129```ts
130// xxx.ets
131
132import { picker } from '@kit.CoreFileKit';
133import { BusinessError } from '@kit.BasicServicesKit';
134import { DownloadFileButton, DownloadLayoutDirection, DownloadIconStyle, DownloadDescription } from '@kit.ArkUI';
135
136@Entry
137@Component
138struct Index {
139  build() {
140    Column() {
141      DownloadFileButton({
142        contentOptions: {
143          icon: DownloadIconStyle.FULL_FILLED,
144          text: DownloadDescription.DOWNLOAD
145        },
146        styleOptions: {
147          iconSize: '16vp',
148          layoutDirection: DownloadLayoutDirection.HORIZONTAL,
149          fontSize: '16vp',
150          fontStyle: FontStyle.Normal,
151          fontWeight: FontWeight.Medium,
152          fontFamily: 'HarmonyOS Sans',
153          fontColor: '#ffffffff',
154          iconColor: '#ffffffff',
155          textIconSpace: '4vp'
156        }
157      })
158        .backgroundColor('#007dff')
159        .borderStyle(BorderStyle.Dotted)
160        .borderWidth(0)
161        .borderRadius('24vp')
162        .position({ x: 0, y: 0 })
163        .markAnchor({ x: 0, y: 0 })
164        .offset({ x: 0, y: 0 })
165        .constraintSize({})
166        .padding({
167          top: '12vp',
168          bottom: '12vp',
169          left: '24vp',
170          right: '24vp'
171        })
172        .onClick(() => {
173          this.downloadAction();
174        })
175    }
176  }
177
178  downloadAction() {
179    try {
180      const document = new picker.DocumentSaveOptions();
181      document.pickerMode = picker.DocumentPickerMode.DOWNLOAD;
182      new picker.DocumentViewPicker().save(document, (err: BusinessError, result: Array<string>) => {
183        if (err) {
184          return;
185        }
186        console.info(`downloadAction result:  ${JSON.stringify(result)}`);
187      });
188    } catch (e) {
189    }
190  }
191}
192```
193
194![zh-cn_image_0000001643320073](figures/zh-cn_image_0000001643320073.png)
195