Skip to main content

wx_rust_common/bean/
common_upload_param.rs

1//! 通用文件上传参数。
2//!
3//! 对应 Java `me.chanjar.weixin.common.bean.CommonUploadParam`。
4
5use super::CommonUploadData;
6
7/// 通用文件上传参数。
8///
9/// 用于通用上传接口(`WxService::upload`)的参数载体。
10#[derive(Debug, Clone)]
11pub struct CommonUploadParam {
12    /// 文件对应的接口参数名称(非文件名),如 `media`
13    pub name: String,
14
15    /// 上传数据
16    pub data: CommonUploadData,
17
18    /// 额外的表单字段,用于在上传文件的同时提交其他表单数据。
19    ///
20    /// 例如上传视频素材时需要提交 `description` 字段(JSON 格式的视频描述信息)。
21    pub form_fields: Option<std::collections::HashMap<String, String>>,
22}
23
24impl CommonUploadParam {
25    /// 构建通用上传参数。
26    ///
27    /// # 参数
28    /// - `name`:文件对应的接口参数名称(非文件名),如 `media`
29    /// - `data`:上传数据
30    pub fn new(name: impl Into<String>, data: CommonUploadData) -> Self {
31        Self {
32            name: name.into(),
33            data,
34            form_fields: None,
35        }
36    }
37
38    /// 构建带额外表单字段的上传参数。
39    ///
40    /// # 参数
41    /// - `name`:文件对应的接口参数名称
42    /// - `data`:上传数据
43    /// - `form_fields`:额外的表单字段
44    pub fn with_form_fields(
45        name: impl Into<String>,
46        data: CommonUploadData,
47        form_fields: std::collections::HashMap<String, String>,
48    ) -> Self {
49        Self {
50            name: name.into(),
51            data,
52            form_fields: Some(form_fields),
53        }
54    }
55}