Class WeChatWorkUploadService

java.lang.Object
com.bytedesk.wechat.work.upload.WeChatWorkUploadService

@Service public class WeChatWorkUploadService extends Object
企业微信附件上传服务实现
Author:
kefux.com
  • Field Details

    • restTemplate

      private final org.springframework.web.client.RestTemplate restTemplate
    • UPLOAD_ATTACHMENT_URL

      private static final String UPLOAD_ATTACHMENT_URL
      上传附件资源URL
      See Also:
  • Constructor Details

    • WeChatWorkUploadService

      public WeChatWorkUploadService()
  • Method Details

    • uploadAttachment

      public WeChatWorkUploadResponse uploadAttachment(String accessToken, String mediaType, int attachmentType, File file)
      上传附件资源
      Parameters:
      accessToken - 企业微信访问令牌
      mediaType - 媒体文件类型,分别有图片(image)、视频(video)、普通文件(file)
      attachmentType - 附件类型,不同的附件类型用于不同的场景。1:朋友圈;2:商品图册
      file - 要上传的文件
      Returns:
      上传结果响应
    • uploadAttachment

      public WeChatWorkUploadResponse uploadAttachment(String accessToken, String mediaType, int attachmentType, org.springframework.web.multipart.MultipartFile file)
      上传附件资源
      Parameters:
      accessToken - 企业微信访问令牌
      mediaType - 媒体文件类型,分别有图片(image)、视频(video)、普通文件(file)
      attachmentType - 附件类型,不同的附件类型用于不同的场景。1:朋友圈;2:商品图册
      file - 要上传的MultipartFile文件
      Returns:
      上传结果响应
    • buildUrl

      private String buildUrl(String accessToken, String mediaType, int attachmentType)
      构建上传URL
      Parameters:
      accessToken - 访问令牌
      mediaType - 媒体类型
      attachmentType - 附件类型
      Returns:
      完整的URL
    • uploadMedia

      public WeChatWorkUploadResponse uploadMedia(String accessToken, String mediaType, File file)
      上传临时素材媒体文件
      Parameters:
      accessToken - 企业微信访问令牌
      mediaType - 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)、普通文件(file)
      file - 要上传的文件
      Returns:
      上传结果响应
    • uploadMedia

      public WeChatWorkUploadResponse uploadMedia(String accessToken, String mediaType, org.springframework.web.multipart.MultipartFile file)
      上传临时素材媒体文件(MultipartFile版本)
      Parameters:
      accessToken - 企业微信访问令牌
      mediaType - 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)、普通文件(file)
      file - 要上传的MultipartFile文件
      Returns:
      上传结果响应
    • uploadMediaFromPath

      public WeChatWorkUploadResponse uploadMediaFromPath(String filePath, String mediaType, String accessToken)
      通过本地文件路径上传媒体文件
      Parameters:
      filePath - 本地文件路径
      mediaType - 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)、普通文件(file)
      accessToken - 企业微信访问令牌
      Returns:
      上传结果响应
    • uploadMediaFromUrl

      public WeChatWorkUploadResponse uploadMediaFromUrl(String fileUrl, String mediaType, String accessToken)
      从URL下载文件并上传到企业微信
      Parameters:
      fileUrl - 文件URL
      mediaType - 媒体文件类型,分别有图片(image)、语音(voice)、视频(video)、普通文件(file)
      accessToken - 企业微信访问令牌
      Returns:
      上传结果响应
    • downloadFile

      private void downloadFile(String fileUrl, Path targetPath) throws IOException
      从URL下载文件
      Parameters:
      fileUrl - 文件URL
      targetPath - 保存的目标路径
      Throws:
      IOException - 下载过程中的IO异常
    • getFileNameFromUrl

      private String getFileNameFromUrl(String fileUrl)
      从URL中获取文件名
      Parameters:
      fileUrl - 文件URL
      Returns:
      文件名
    • uploadMedia

      public WeChatWorkUploadResponse uploadMedia(File file, WeChatWorkThreadExtra weChatWorkExtra)
      上传媒体文件便捷方法,从WeChatWorkThreadExtra获取accessToken
      Parameters:
      file - 要上传的文件
      weChatWorkExtra - 企业微信配置
      Returns:
      上传结果响应
    • determineMediaType

      private String determineMediaType(String fileName)
      根据文件名判断媒体类型
      Parameters:
      fileName - 文件名
      Returns:
      媒体类型:图片(image)、语音(voice)、视频(video)、普通文件(file)
    • downloadMedia

      public byte[] downloadMedia(String accessToken, String mediaId)
      下载临时素材媒体文件
      Parameters:
      accessToken - 企业微信访问令牌
      mediaId - 媒体文件ID
      Returns:
      下载的文件字节数组
    • downloadMediaToFile

      public File downloadMediaToFile(String accessToken, String mediaId, String savePath)
      下载临时素材媒体文件并保存到本地
      Parameters:
      accessToken - 企业微信访问令牌
      mediaId - 媒体文件ID
      savePath - 保存路径
      Returns:
      保存的文件对象
    • downloadMediaToTempFile

      public File downloadMediaToTempFile(String accessToken, String mediaId, String fileExtension)
      下载临时素材媒体文件并保存到临时目录
      Parameters:
      accessToken - 企业微信访问令牌
      mediaId - 媒体文件ID
      fileExtension - 文件扩展名(如 .jpg, .mp3 等)
      Returns:
      保存的临时文件对象
    • uploadImage

      public WeChatWorkUploadResponse uploadImage(String accessToken, File file)
      上传图片获取永久URL
      Parameters:
      accessToken - 企业微信访问令牌
      file - 要上传的图片文件
      Returns:
      上传结果响应
    • uploadMediaByUrl

      public WeChatWorkUploadResponse uploadMediaByUrl(String accessToken, int scene, String type, String filename, String url, String md5)
      异步上传临时素材
      Parameters:
      accessToken - 企业微信访问令牌
      scene - 场景值,目前仅支持1-客户联系入群欢迎语素材
      type - 媒体文件类型,目前仅支持video和file
      filename - 文件名
      url - 文件CDN URL
      md5 - 文件MD5值
      Returns:
      上传结果响应
    • getUploadByUrlResult

      public WeChatWorkUploadResponse getUploadByUrlResult(String accessToken, String jobid)
      查询异步上传任务结果
      Parameters:
      accessToken - 企业微信访问令牌
      jobid - 任务ID
      Returns:
      任务结果响应
    • validateFileSize

      private boolean validateFileSize(File file, String mediaType)
      验证文件大小是否符合限制
      Parameters:
      file - 文件
      mediaType - 媒体类型
      Returns:
      是否符合限制
    • validateFileType

      private boolean validateFileType(File file, String mediaType)
      验证文件类型是否符合要求
      Parameters:
      file - 文件
      mediaType - 媒体类型
      Returns:
      是否符合要求