美文网首页
dropify.js实现文件预览

dropify.js实现文件预览

作者: 五岁小孩 | 来源:发表于2021-04-08 09:17 被阅读0次

dropify.js 实现文件预览

目的

  • 选择框选中文件后,实现预览按钮小窗口打开图片/pdf文件

js

html添加 预览按钮

<!-- 需要引用dropify.js 以及样式  --> 
<input type="file" class="dropify" data-height="20" name="file"
             id="uploadFile" placeholder="请选择文件">
                 
<!-- 自定义添加预览按钮  --> 
 <a href="#" onclick="previewFile('uploadFile')"
              class="btn btn-rounded btn-light">预览</a>

js 方法

/**
* previewFile(domId) 预览按钮事件,domId为上传文件框的ID 
*/
function previewFile(domId) {
    //获取上传的文件
    let fileObj = $('#' + domId).get(0).files[0];
    if (fileObj === undefined || isNull(fileObj)) {
        //获取默认文件
        let defaultFileUrl = $('#' + domId).attr("data-default-file")
        if (defaultFileUrl !== "" && defaultFileUrl !== undefined) {
            //存在直接预览
            //新窗口打开预览
            window.open(defaultFileUrl, '_blank')
            return;
        }
        //用户未选择文件且无默认文件
        swal('', "请选择文件", "warning");
        return;
    }
    let fileUploadType = fileObj.name.substring(fileObj.name.lastIndexOf(".") + 1);
    if (fileUploadType !== "png" && fileUploadType !== "jpg" && fileUploadType !== "jpeg" && fileUploadType !== "pdf") {
        // 只能上传文件
        // swal('', "仅支持在线预览图片/pdf类型", "warning");
        swal({
            title: "是否下载?",
            text: "当前文件不是图片/pdf类型,不支持在线预览",
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#dc3545",
            confirmButtonText: "确认",
            cancelButtonText: "取消",
            closeOnConfirm: false
        }, function () {
            //将文件对象转为预览对象Url
            let url = createObjectURL(fileObj)
            //新窗口打开预览
            window.open(url, '_blank')
            setTimeout(function () {
              swal.close()
            },1000)
        });
        return
    }
    //将文件对象转为预览对象Url
    let url = createObjectURL(fileObj)
    //新窗口打开预览
    window.open(url, '_blank')
}
//(关键转换)将本地上传的文件对象转换为blob+url,,可直接在浏览器新窗口打开预览
function createObjectURL(fileObj) {
    let realUrl=""

    // 针对不同的浏览器
    if (window.createObjcectURL !== undefined) {// basic
        realUrl = window.createOjcectURL(fileObj);
    } else if (window.URL !== undefined) {// mozilla(firefox)
        realUrl = window.URL.createObjectURL(fileObj);
    } else if (window.webkitURL !== undefined) {// webkit or chrome
        realUrl = window.webkitURL.createObjectURL(fileObj);
    }
    return realUrl
}

相关文章

  • dropify.js实现文件预览

    dropify.js 实现文件预览 目的 选择框选中文件后,实现预览按钮小窗口打开图片/pdf文件 js html...

  • 前端实现在线预览pdf、word、xls、ppt等文件

    1、前端实现pdf文件在线预览功能 方式一: 通过a标签href属性实现 pdf文件理论上可以在浏览器直接打开预览...

  • iOS开发-文件预览查看

    适用人群:iOS开发人员。内容:使用系统自带的QLPreviewController实现文件预览。支持预览文件格式...

  • 前端实现在线预览文件

    word、xls、ppt文件在线预览功能word、ppt、xls文件实现在线预览的方式比较简单可以直接通过调用微软...

  • 用Vim写markdown

    如何使用vim插件实时预览markdown文件 主要是使用一个叫markdown-preview的插件来实现预览,...

  • 前端预览PDF,Excel,Word,TXT文件

    前端可以使用iframe可以直接预览文件,以下是几种依靠iframe实现在线预览的解决方案。