【JS插件】DropZone

简述

DropZone 是一款JavaScript 文件拖拽上传插件,提供Ajax异步上传功能。

目录结构:

DropZone

前端

导入CSS和JS文件:

<!-- Drop Zone-->
<link rel="stylesheet" href="/static/admin/assets/plugins/dropzone/css/dropzone.css">
<link rel="stylesheet" href="/static/admin/assets/plugins/dropzone/css/basic.css">
<!-- dropZone -->
<script src="/static/admin/assets/plugins/dropzone/js/dropzone.min.js"></script>
<script src="/static/admin/assets/js/html/dropZone.js"></script>

DropZone实现效果十分简单,只需要一个div

<div id="dropz" class="dropzone"></div>

Jq代码:

var myDropzone = new Dropzone("#dropz", {
    url: "/admin/upload", // 文件提交地址
    method: "post",  // 也可用put
    paramName: "dropzFile", // 默认为file
    maxFiles: 1,// 一次性上传的文件数量上限
    maxFilesize: 5, // 文件大小,单位:MB
    acceptedFiles: ".jpg,.gif,.png,.jpeg", // 上传的类型
    addRemoveLinks: true,
    parallelUploads: 1,// 一次上传的文件数量
    //previewsContainer:"#preview", // 上传图片的预览窗口
    dictDefaultMessage: '拖动文件至此或者点击上传',
    dictMaxFilesExceeded: "您最多只能上传1个文件!",
    dictResponseError: '文件上传失败!',
    dictInvalidFileType: "文件类型只能是*.jpg,*.gif,*.png,*.jpeg。",
    dictFallbackMessage: "浏览器不受支持",
    dictFileTooBig: "文件过大上传文件最大支持.",
    dictRemoveLinks: "删除",
    dictCancelUpload: "取消",
    //请求成功后执行的函数
    init: function () {
        this.on("success", function (file, data) {
            $("#articleUrl").val(data.path);
        });
    }
});
Dropzone.autoDiscover = false;

后台

后台文件上传方法,该方法同时处理了dropZone文件上传插件和Editor.md文件上传:

/**
     * 文件上传
     * @param dropzFile
     * @param editorFile
     * @param request
     * @return
     */
    @RequestMapping(value = "upload",method = RequestMethod.POST)
    @ResponseBody
    public Map<String,Object> DropZone(MultipartFile dropzFile,
                                       @RequestParam(value = "editormd-image-file", required = false) MultipartFile editorFile,
                                       HttpServletRequest request){
        //数据返回对象
        Map<String,Object> result = new HashMap<>();
        //判断是dropZone文件还是editor文件
        MultipartFile myFile = dropzFile == null ? editorFile : dropzFile;
        if(myFile != null){
            //获取文件名
            String fileName = myFile.getOriginalFilename();
            //获取文件后缀名
            String fileSuffix = fileName.substring(fileName.lastIndexOf("."));
            //获取文件上传文件夹路径
            String filePath = request.getSession().getServletContext().getRealPath(Const.UPLOAD_PATH);
            //判断文件夹是否存在,不存在就创建文件夹
            File file = new File(filePath);
            if(! file.exists()){
                file.mkdirs();
            }
            //UUID替换文件名
            String filePrefix = UUID.randomUUID().toString();
            file = new File(filePath,filePrefix+fileSuffix);
            //上传文件
            try {
                myFile.transferTo(file);
            } catch (IOException e) {
                logger.error("博客展示图上传出错!!!");
            }
            //拼装url返回值
            String url = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + "/" + Const.UPLOAD_PATH + filePrefix + fileSuffix;
            //根据不同的文件封装返回信息
            if(dropzFile != null){
                result.put("path",url);
            }
            /**
             * success : 0 | 1,           // 0 表示上传失败,1 表示上传成功
             * message : "提示的信息,上传成功或上传失败及错误信息等。",
             * url     : "图片地址"        // 上传成功时才返回
             */
            if(editorFile != null){
                result.put("success",1);
                result.put("message","上传成功");
                result.put("url",url);
            }
        }
        //文件为空
        else{
            //根据不同的文件封装返回信息
            if(dropzFile != null){
                result.put("path","");
            }
            /**
             * success : 0 | 1,           // 0 表示上传失败,1 表示上传成功
             * message : "提示的信息,上传成功或上传失败及错误信息等。",
             * url     : "图片地址"        // 上传成功时才返回
             */
            if(editorFile != null){
                result.put("success",0);
                result.put("message","上传失败");
            }
        }

        return result;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值