总结--上传插件Upload.js的使用

3 篇文章 0 订阅

最近用了一个上传的插件,趁热总结一下
原文链接
简单说一下,这个插件可以上传很多种类型的文件,兼容性也可以,我这里只用到了图片的上传,所以就说这个功能了。先说一下上传图片的大致逻辑:
1.前端选中图片上传到服务器
2.服务器会自动返回图片在服务器的路径,在这个事件里面返回的数据
3.将路径赋值给需要用到的地方
话不多说,上代码:

	<p class="upload_businessImg">
      <button type="button" id="upload_businessImg_btn" class="upload_businessImg_btn">上传</button>请上传营业执照扫描件或照片,<span class="businessImg_err_tip">图片格式JPEG、PNG、JPG、GIF,文件大小2M以内。</span>

       <input id="imgtoken" type="hidden" name="imgtoken" value=""><!--作为参数放在上传路径后面,看需求,可以没有这个参数,如果需求需要,则不能为空  如果为空会返回错误信息    意思是说 “令牌解析错误”  每个公司的项目里应该都有这个,是后端给出来的-->
       <input id="supplierid" type="hidden" name="supplierid" value=""><!--作为参数放在上传路径后面,看需求,可以没有这个参数,如果需求需要,则不能为空,如果为空会返回错误信息    意思是说 “用户权限受阻”  这个根据个人情况而定,每个公司的项目里应该都有这个,是后端给出来的-->
       <input id="functionname" type="hidden" name="functionname" value="ablu"><!-- 功能名 ,作为参数放在上传路径后面,看需求,可以没有这个参数,如果需求需要,则不能为空,   如果为空会返回错误信息  “the function is not registered!”  意思是说 “该函数未注册!” -->
     </p>

<!--下面是预览图片的框,只有一个框,当然也可以有多个框 -->
	<div class="isshow_preview_mask businessImg">
      <img id="businessImgSrc" src="" alt="">
      <div class="businessImg_mask">
        <div class="button_box">
          <button type="button" class="see_businessImg j_view_image">查看</button><button type="button" class="delt_businessImg del_img">删除</button>
        </div>
      </div>
    </diiv>

参数说明图片:
参数说明

// 初始化上传事件
    $(document).ready(function(){
        initUploadify_businessImg();
    });

    // 判断图片格式及大小
    function judgePictureFormatSize( filType, err_tip, file_size ){
        if(filType == "jpg" || filType == "jpeg" || filType == "png" || filType == "gif" || file_size < 2 * 1024 * 1024){
            err_tip.css("color","#999");
            return true;
        }else{
            err_tip.css("color","#FF001A");
            return false;
        }
    };

    // 上传图片
    function initUploadify_businessImg() {
    	//一下各种参数的说明可以从顶部链接找到,或者看上面添加的图片
            var setting = {
                runtimes: 'html5,flash,silverlight,html4',	//默认"html5,flash,silverlight", 用来指定上传方式,指定多个上传方式请使用逗号隔开。一般情况下,你不需要配置该参数,因为Plupload默认会根据你的其他的参数配置来选择 最合适的上传方式。如果没有特殊要求的话,Plupload会首先选择html5上传方式,如果浏览器不支持html5,则会使用flash或 silverlight,如果前面两者也都不支持,则会使用最传统的html4上传方式。如果你想指定使用某个上传方式,或改变上传方式的优先顺序,则你 可以配置该参数。
                browse_button: 'upload_businessImg_btn',	//触发文件选择对话框的DOM元素,当点击该元素后便后弹出文件选择对话框。该值可以是DOM元素对象本身,也可以是该DOM元素的id
                container: $('#upload_businessImg_btn').parent()[0],		//用来指定Plupload所创建的html结构的父容器,默认为前面指定的browse_button的父元素。该参数的值可以是一个元素的id,也可以是DOM元素本身。
                url: '',	//这里的路径就是上传图片的基础路径,比如:https://XXX.XXX.com/uploadfile,路径后面要跟参数,见下面 uploader.setOption
                multipart: true,		//为true时将以multipart/form-data的形式来上传文件,为false 时则以二进制的格式来上传文件。html4上传方式不支持以二进制格式来上传文件,在flash上传方式中,二进制上传也有点问题。并且二进制格式上传还 需要在服务器端做特殊的处理。一般我们用multipart/form-data的形式来上传文件就足够了。
                http_method: 'get',	
                multi_selection: true,	//是否可以在文件浏览对话框中选择多个文件,true为可以,false为不可以。默认true,即可以选择多个文件。需要注意的是,在某些不支持 多选文件的环境中,默认值是false。比如在ios7的safari浏览器中,由于存在bug,造成不能多选文件。当然,在html4上传方式中,也是 无法多选文件的。
                filters: {
                    mime_types : [ //只允许上传图片
                        { title : "Image files", extensions : "jpg,gif,png,jpeg" }
                      ],
                      max_file_size : '2048kb', //最大只能上传2048kb的文件
                },
                file_data_name: 'file',
                flash_swf_url: 'js/Moxie.swf',	//这个文件可以从本文章顶部的链接里面找,下载下来,文件的路径可以是相对的,也可以是绝对的
                silverlight_xap_url: 'js/Moxie.xap',	//同上
                init: {
                    PostInit: function(uploader) {
                        $('filelist').innerHTML = '';
                        $('uploadfiles').onclick = function() {
                            uploader.start();
                            return false;
                        }
                        ;
                    },
                    FilesAdded: function(uploader, files) {
                        plupload.each(files, function(file) {
                            var filType =  file.name ?  file.name.split('.') : [] ; 
                            var imgtoken = $("#imgtoken").val();
                            var functionname = $("#functionname").val();
                            var supplierid = $('#supplierid').val();
                            var businessImg_err_tip = $(".businessImg_err_tip");
                            if( judgePictureFormatSize( filType, businessImg_err_tip, file.size ) ){
                               uploader.setOption({
                                    url:"https://upload.dhgate.com/uploadfile?functionname=" + functionname + "&supplierid=" + supplierid + "&token=" + imgtoken
                                }); 
                               uploader.start();
                            }else{
                                return false;
                            }
                        });
                    },
                    FileUploaded: function(uploader, file, responseObject) {
                        if (responseObject != "") {
                            var s_value = window.eval("(" + responseObject.response + ")");
                            var imgurl = s_value.l_imgurl;
                            var businessImg_src = $("#businessImgSrc").attr("src");
                            console.log(s_value)
                            if( imgurl == null || undefined || "" ){
                                $(".businessImg_upload_err").text("抱歉,图片上传失败,请稍后再试。");
                                $("#businessImg_box").find("img[src='']").attr("src","");
                            }else{
                                $(".businessImg_upload_err").text("");
                                if ( businessImg_src == "" ) {
                                    businessImg_src = imgBaseUlr + "" + imgurl;
                                    $("#businessImgSrc").attr("src",businessImg_src);
                                }
                            } 
                        }
                    },
                    Error: function(uploader, err) {
                        $.each(uploader.files, function() {
                            $(".businessImg_upload_err").text("抱歉,图片上传失败,请稍后再试。");
                        })
                        return false
                    }
                }
            }
    }

要说坑的话,我遇到的是上面那几个隐藏域的input,基于业务需求传递参数,后台获取的参数到没什么,就是那个functionnme比较难搞,需要在公司某个系统里先注册,完了把functionname的值(也就是注册的事件名称)当作参数传回去作为验证。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在vue-quill-editor中实现文件上传功能,您可以使用@vueup/vue-quill插件。此插件提供了自定义上传图片到服务器、粘贴图片上传至服务器、拖拽图片上传至服务器的功能。您可以参考quill-image-paste-module文档了解更多关于这些功能的信息。 关于上传.docx格式文件,您可以按照以下步骤实现: 1. 首先,确保您已经安装了@vueup/vue-quill插件,并在您的Vue项目中引入它。 2. 然后,您需要配置文件上传的接口。您可以使用后端技术(如Node.js)创建一个文件上传的API,并将其与vue-quill-editor集成。在API中,您可以使用合适的文件上传库(如multer)来处理.docx格式的文件上传。 3. 在vue-quill-editor的配置中,您可以使用自定义的上传功能来处理文件上传事件。可以通过配置`image-upload`选项来实现这一点,将上传的文件发送到您之前配置的文件上传接口。 4. 在vue-quill-editor中,您可以通过设置`formats`选项来指定可接受的文件格式。您可以将您希望接受的文件格式(例如.docx)添加到此选项中。 通过以上步骤,您就可以在vue-quill-editor中实现上传.docx格式文件的功能。请参考@vueup/vue-quill的文档和示例,以获取更详细的配置和使用方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vite vue-quill 构建基本案例](https://blog.csdn.net/m0_46262108/article/details/128855156)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值