美文网首页
文件上传下载简单js封装

文件上传下载简单js封装

作者: 东本三月 | 来源:发表于2020-03-03 10:43 被阅读0次

1.js代码(最后更新时间2020-3-3)

var fileUpload={
        //进行文件上传
        //file_id:        文件input的id
        //return_url_id:  文件url要保存到的input的id
        //return_name_id: 文件名称要保存到的input的id
        fileUpload:function(file_id,return_url_id,return_name_id){
            var formData = new FormData();
            formData.append("file",$("#"+file_id)[0].files[0])
            $.ajax({
                url: '${request.contextPath}/file/file_upload',
                type: 'POST',
                data: formData,
                async: false,
                cache: false,
                contentType: false,
                processData: false,
                success: function(o) {
                    if(o.code==1){
                        $("#"+return_name_id).val(o.fileName);
                        $("#"+return_url_id).val(o.path);
                    }else{
                        Message.error(o.msg);
                    }
                },
                error: function(data) {
                }
            });
        },
        //验证文件的格式与大小,验证通过返回true,否则返回false
        //file_id:           文件input的id
        //correct_file_type: 正确的文件类型,数据类型是数组
        //fileSize           文件的大小,以kb为单位
        file_format_verify:function(file_id,correct_file_type,correct_file_size){
            var file = $("#"+file_id);
            var filePath = file.val();
            if("" != filePath){
                var fileType = fileUpload.getFileType(filePath);
                //判断上传的附件格式

                //是否是指定的格式
                var is_correct=false;
                for(var i=0;i<correct_file_type.length;i++){
                    var temp=correct_file_type[i];
                    if(temp==fileType){
                        is_correct=true;
                        break;
                    }
                }
                if(!is_correct){
                    var text="请上传: ";
                    for(var i=0;i<correct_file_type.length;i++){
                        var temp=correct_file_type[i];
                        text=text+temp;
                        if(i!= (correct_file_type.length-1) ){
                            text=text+","
                        }
                        if(i%4==0){
                            text=text+"</br>"
                        }
                    }
                    Message.error(text);
                    file.val("");
                    return false;
                }
                //获取附件大小(单位:KB)
                var fileSize = document.getElementById("file").files[0].size / 1024;
                if(fileSize > correct_file_size){
                    Message.error("文件大小不能超过"+(fileSize/1024)+"Mb");
                    file.val("");
                    return false;
                }
                return true;
            }
            return false;
        },
        //验证文件的格式与大小,使用默认的设置
        file_format:function(file_id){
            var correct_file_type=["pdf","txt","xls","xlsx","ppt","pptx","doc","docx","png","jpg","jpeg","mp4","mp3","avi","zip","rar文件格式"];
            return fileUpload.file_format_verify(file_id,correct_file_type,102400)
        },

        getFileType:function(filePath){
            var startIndex = filePath.lastIndexOf(".");
            if(startIndex != -1)
                return filePath.substring(startIndex+1, filePath.length).toLowerCase();
            else return "";
        },
        download:function (path_id,fileName_id) {
            var path=$("#"+path_id).val();
            var fileName=$("#"+fileName_id).val();
            fileUpload.downloadFile(path,fileName);
        },
        downloadFile:function (path,fileName) {
            path=encodeURIComponent(path)
            fileName=encodeURIComponent(fileName)
            $.post("${request.contextPath}/file/fileIsExist",{"path":path},function(o){
                if(o.code==1){
                    window.location.href="${request.contextPath}/file/download?path="+path+"&fileName="+fileName;
                }else{
                    Message.error(o.msg);
                }
            });

        }
    }

2.编辑页面的上传与下载

  • 样式:


    样式
  • html
  • attachmenturl和filename分别对应Model的字段,是文件的url和文件的名称.
  • 三个input的id可不用修改,只是用来标记.多文件上传可以通过不同的id进行区分
                            <div class="form-group" >
                                <label class="col-xs-2 control-label">附件 </label>
                                <div class="col-xs-10">
                                    <input type="hidden" class="form-control"  style="width:400px" id="file_url" name="attachmenturl"
                                           placeholder="附件url ">
                                    <input type="hidden" class="form-control"  style="width:400px" id="file_name" name="filename"
                                    placeholder="附件名称 ">
                                    <input type="file" id="file"  style="width:400px"  onchange="E.file_upload()"/>
                                    <a class="gbn gbn-s gbn-warning "  href="javascript:" onclick="fileUpload.download('file_url','file_name');" style="display:none;background-color: cadetblue;margin-top: 5px;" id="download1">下载原文件</a>
                                </div>
                            </div>
  • 文件回显和上传方法
  • fileUpload.file_format("file")是用来验证文件的格式与大小,如果不需要可以去掉.有其他需求可用 file_format_verify(file_id,correct_file_type,correct_file_size)方法去指定文件的类型和大小
var E={
          load:function(){
                $.getJSON("${request.contextPath}/notice/v1/get/"+$("#id").val(),function(o){
                    if(o.code ==1){
                        $("#form1").setFormValues(o.data);
                        if(!Utils.isEmpty(o.data.filename)){
                            $("#download1").show();
                            $("#download1").html("下载原文件:"+o.data.filename)
                        }
                    }
                });
            },
            file_upload:function () {
                if(fileUpload.file_format("file")){
                    fileUpload.fileUpload("file","file_url","file_name")
                }
            },          
    }

3.index页面的下载

  • FILENAME和ATTACHMENTURL需要根据实际字段进行修改
{"hidden":false,"align":"left","sortable":false,"name":"FILENAME","resizable":true,"label":"附件",
        formatter:function(cellValue, options, rowObject){
            var temp = "";
            if(!Utils.isEmpty(cellValue)) {
                var path=encodeURIComponent( rowObject.ATTACHMENTURL);
                var fileName=encodeURIComponent(rowObject.FILENAME);
                var fun="fileUpload.downloadFile(\"" + path+ "\",\""+fileName+"\")";
                temp = cellValue + "<a class='gbn-min glyphicon glyphicon-download-alt g-fr' style='color:white;' href='javascript:;' title='下载附件' onclick='"+fun+"' ><i></i></a>";
            }
            return temp;
        }
    },

相关文章

网友评论

      本文标题:文件上传下载简单js封装

      本文链接:https://www.haomeiwen.com/subject/mqtqlhtx.html