layui 上传图片文件到钉钉服务器

简介: layui版本项目引入页面引入java后台接收参考文献

layui上传


layui版本

首先先下载layui-2.5.6.zip包,解压后选择自己用到的文件放入项目中。

下载地址:https://download.csdn.net/download/csdn565973850/12299623


项目引入

我的项目中只用到了upload功能,其他未使用,所以引入如下:

image.png


页面引入

image.png

image.png


具体页面代码如下add.html

<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
  <th:block th:include="include :: header('新增钉钉工作通知消息模板')" />
  <link href="../static/layui/layui.css" th:href="@{/layui/layui.css}" rel="stylesheet"/>
</head>
<body class="white-bg">
    <div class="wrapper wrapper-content animated fadeInRight ibox-content">
        <form class="form-horizontal m" id="form-msgTemplet-add">
      <div class="form-group">  
        <label class="col-sm-3 control-label"><span style="color: red">*</span>模板名称:</label>
        <div class="col-sm-8">
          <input id="templetName" name="templetName" class="form-control" type="text" th:required="true">
        </div>
      </div>
      <div class="form-group">  
        <label class="col-sm-3 control-label"><span style="color: red">*</span>模板类型:</label>
        <div class="col-sm-8">
          <select id="templetType" name="templetType" class="form-control m-b" required onchange="showBtn()">
            <option value="text">文本</option>
            <option value="image">图片</option>
            <option value="file">文件</option>
          </select>
        </div>
      </div>
      <div class="form-group hide" id="uploadbtn">
        <label class="col-sm-3 control-label"><span style="color: red">*</span>媒体文件:</label>
        <div class="col-sm-8">
          <button type="button" class="layui-btn" id="uploadfile">上传文件</button>
        </div>
      </div>
      <div class="form-group">  
        <label class="col-sm-3 control-label"><span style="color: red">*</span>模板内容:</label>
        <div class="col-sm-8">
          <textarea id="content" name="content" class="form-control" type="text" th:required="true" ></textarea>
        </div>
      </div>
    </form>
  </div>
    <div th:include="include::footer"></div>
  <script src="../static/layui/layui.js" th:src="@{/layui/layui.js}"></script>
    <script type="text/javascript">
        var prefix = ctx + "project/msgTemplet";
        layui.use('upload', function(){
            var upload = layui.upload;
            //执行实例
            uploadInst = upload.render({
                elem: '#uploadfile' //绑定元素
            });
        });
        function showBtn() {
            var type = $("#templetType").val();
            if (type == "image" || type == "file") {
                $("#content").attr("readonly",true);
                $("#uploadbtn").removeClass('hide');
                uploadInst.reload({
                    elem: '#uploadfile' //绑定元素
                    ,url: prefix + '/upload/' //上传接口
                    ,data: {type: type}
                    ,accept:'file'
                    ,done: function(res){
                        //上传完毕回调
                        if (res.code == 0) {
                            $("#content").val(res.data);
                            layer.msg(res.msg);
                        }else {
                            layer.msg(res.msg);
                        }
                    }
                    ,error: function(){
                        //请求异常回调
                        layer.msg('上传失败!');
                    }
        });
      }else {
                $("#content").attr("readonly",false);
                $("#uploadbtn").addClass('hide');
      }
        }
    $("#form-msgTemplet-add").validate({
      rules:{
        xxxx:{
          required:true,
        },
      },
      focusCleanup: true
    });
    function submitHandler() {
          if ($.validate.form()) {
              $.operate.save(prefix + "/add", $('#form-msgTemplet-add').serialize());
          }
      }
  </script>
</body>
</html>


页面效果如下

image.png


java后台接收

image.png


代码如下:controller代码

  @RequestMapping( "/upload")
  @ResponseBody
  public AjaxResult upload(MultipartFile file,HttpServletRequest request)
  {
    try {
      String type = request.getParameter("type");
      OapiMediaUploadResponse rsp = dingDingService.uploadMedia(type,file);
      if (rsp.isSuccess()) {
        return new AjaxResult(AjaxResult.Type.SUCCESS,"上传成功!",rsp.getMediaId());
      }else {
        return new AjaxResult(AjaxResult.Type.ERROR,rsp.getErrmsg());
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
    return error();
  }


service代码:

    /**
     * 调用钉钉上传文件
     * (1) 图片(image):1MB,支持JPG格式
     * (2)语音(voice):2MB,播放长度不超过60s,AMR格式
     * (3)普通文件(file):10MB
     * @param type 文件类型  image file  (voice暂不支持)
     * @param file  文件
     * @return
     */
    @Override
    public OapiMediaUploadResponse uploadMedia(String type, MultipartFile file) {
        try {
            //获取企业凭证 access_token
            String accessToken = getAccessToken();
            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/media/upload");
            OapiMediaUploadRequest req = new OapiMediaUploadRequest();
            req.setType(type);
            req.setMedia(new FileItem(file.getOriginalFilename(),file.getInputStream()));
            OapiMediaUploadResponse rsp = client.execute(req, accessToken);
            return rsp;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

这里的上传是调用钉钉服务上传文件


参考文献

layui文档

钉钉开发文档


目录
打赏
0
0
0
0
1644
分享
相关文章
|
23天前
|
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
127 69
|
30天前
|
CentOS 7.9系统备份:每日定期发送最新备份文件到另一台服务器。
注意,这个解决方案忽略了很多细节,例如错误处理和通知、备份版本控制、循环处理旧的备份文件等等。此外,你也应该尽量保持源服务器和目标服务器之间快速,稳定且安全的网络连接,并且目标服务器应该有足够的空间用于存放每天的备份文件。如果你需要更高级的备份解决方案,可能需要考虑一下使用专门的备份工具或者服务。
69 18
|
5月前
|
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
152 9
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
Windows服务器上大量文件迁移方案
Windows服务器上大量文件迁移方案
460 1
服务器感染了.baxia勒索病毒,如何确保数据文件完整恢复?
近年来,勒索病毒如.baxia不断演变,利用漏洞、社交工程等手段加密文件,威胁范围扩大。加密货币的兴起使其支付方式更匿名,追踪困难。技术支持尤为重要,添加技术服务号(shuju315),专业团队提供数据恢复方案。面对复杂解密要求,包括赎金支付、个人信息提供和执行特定操作,需保持冷静并寻求帮助。防御措施包括加强安全意识、定期备份数据、安装杀毒软件、避免未知文件、更新系统及制定应急响应计划。
142 11
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
1537 0
|
6月前
|
Flask学习笔记(二):基于Flask框架上传图片到服务器端并原名保存
关于如何使用Flask框架上传图片到服务器端并以其原名保存的教程。
217 1
|
6月前
|
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
这篇博客文章是关于如何使用Flask框架上传特征值数据到服务器端,并将其保存为txt文件的教程。
79 0
Flask学习笔记(三):基于Flask框架上传特征值(相关数据)到服务器端并保存为txt文件
|
7月前
|
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
98 5
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等