文件上传控件

一.效果
<input type="button" class="pos-a pos-t0 radius-4 cursor-p font14 border-none color-f bg-1890ff" style="left:115px;line-height:30px;width:100px;" value="上传" data-feidao-actions="click:eu-009"/>

<span data-feidao-presentation="P010">

<fd-w000016 spaceid="diting" domain="http://p9uf3py07.bkt.clouddn.com/" hide-drag id="uploader" file-type='["video/mp4","video/mpeg","video/ogg"]' preview-type="video" data-feidao-actions="fdwe-uploaded:eu-005,fdwe-error:eu-006,fdwe-added:eu-008">

                        <div slot='drag_div'>

                            <!--空 start-->

                            <div class="border-1 bg-f4 text-c cursor-p" style="padding: 103px 0px; margin-top: 10px;">

                                <i class="icon iconfont icon-upload display-ib text-c vertical-a-t" style="font-size:100px;"></i>

                                <div class="font22" style="height:50px;line-height:50px;">将文件拖拽到这里</div>

                            </div>

                            <!--空 end-->

                        </div>

</fd-w000016>

<input type="button" class="pos-a pos-t0 radius-4 cursor-p font14 border-none color-f bg-1890ff" style="left:115px;line-height:30px;width:100px;" value="上传" data-feidao-actions="click:eu-009"/>

<span data-feidao-presentation="P010">

<fd-w000016 spaceid="diting" domain="http://p9uf3py07.bkt.clouddn.com/" hide-drag id="uploader" file-type='["video/mp4","video/mpeg","video/ogg"]' preview-type="video" data-feidao-actions="fdwe-uploaded:eu-005,fdwe-error:eu-006,fdwe-added:eu-008">
                        <div slot='drag_div'>
                            <!--空 start-->
 
                            <!--空 end-->
                        </div>
</fd-w000016>


二.代码片段
//add事件
const param = args[0];
 
    const file = param.file;
 
    const uploader = fd.data.node.querySelector('#uploader_audio') as upload;
 
fd.data.file_id && (uploader.remove_file(fd.data.file_id));
 
    fd.data.file_id = param.file_id;
 
    const name: string = param.name;
 
    const audio_name = name.substring(0, name.lastIndexOf('.'));
 
 
    const suffix_name = "." + name.replace(/.+\./, "");//后缀名
    if(suffix_name!=".mp3"){
 
        uploader.remove_file(fd.data.file_id);
 
        fsm_component_msg("zj-common-002", "ec-001", 'fail', '请选择正确格式的音频文件')
 
        return;
 
    }
 
    console.log(audio_name,suffix_name);
 
    const audio_input = fd.data.node.querySelector<HTMLInputElement>("#audio_name");
 
    audio_input.value=audio_name;
 
    // uploaded事件
    const param = args[0].upload_data;
    const file_id = param.file_id;
    const key = param.key;
    const duration = parseInt(param.avinfo.audio.duration).toFixed(2).toString();
    const size = (Math.round(param.size * 100) / 100 / 1000 / 1000).toFixed(2).toString();
 
    console.log(duration, size)
    const source_link = param.source_link;//原始上传文件地址
    const sizes = fd.data.node.querySelector<HTMLSpanElement>('[data-feidao-id="size"]').innerText = size + 'M';
    const durations = fd.data.node.querySelector<HTMLSpanElement>('[data-feidao-id="duration"]').innerText = duration + 's';
    console.log(sizes, durations)
    const audio_input = fd.data.node.querySelector<HTMLInputElement>("#audio_name");
    fd.data.cloud_mark = key;
 
    console.log('fd.data.cloud_mark', fd.data.cloud_mark);
    const audio = fd.data.node.querySelector<HTMLSpanElement>('[ data-feidao-name="value_name"]');
    const audio_no = audio.getAttribute('data-feidao-no');
    const _id = audio.getAttribute('data-feidao-id');
 
    console.log({ size: sizes, duration: durations, audio_name: audio_input, _id: _id, audio_no: audio_no });
    const model_no = fd.data.model_no;
    console.log('model_no', model_no)
    const res = await nodejs(spaceid, '3d_sourse_audio_upd', { size: size, duration: duration, audio_name: audio_input.value, _id: _id, audio_no: audio_no, audio: source_link, cloud_mark: fd.data.cloud_mark, model_no: model_no });
    if (res == 'success') {
        fsm_component_msg('zj-common-002', 'ec-001', 'success', '修改成功');
 
    } else {
        fsm_component_msg('zj-common-002', 'ec-001', 'fail', '修改失败');
    }
    // error
    const param = args[0];
    fsm_component_msg("zj-common-002", "ec-001", 'fail', '上传出错');
    const uploader = fd.data.node.querySelector('#uploader_audio') as upload;
    uploader.remove_file(param.file_id); 
 
三.参数

Attributes
spaceid:项目spaceid,必须传入
domain:文件存储空间地址,必须传入比如七牛云的地址
preview-type
file-type:上传文件类型限制
hide-drag:例如图片:'["image/png","image/jpg"]'; 例如视频:'["video/mp4","video/mpeg","video/ogg"]';
  地址:
Methods
start:add之后调用上传方法
remove_file:若是选择一个文件没有上传,再次选择要将上次选择的文件清除掉
remove_all
stop
Events
fdwe-added:如果需要判断文件格式,在此事件中判断,如果在err事件中判断,进度弹框会出现,为了避免次事件发生
fdwe-process:调用上传方法之后自动出现进度弹框,此事件可以省掉不写
fdwe-error
fdwe-uploaded:上传成功之后,请求云上会返回字段,可以保存到数据库中,例如需要视频的大小,时长或图片的大小

DEMO下载地址:https://dwz.cn/fgXtRtnu

新颖网络上传插件(StorageWebPlug)是一个支持超大文件(2GB,可扩展)上传的COM控件, 具备断点续传,文件MD5验证,大大提高上传效率、节省带宽,有详细的上传进度显示,支持多种脚本语言,欢迎下载体验。免费提供JavaScript SDK包。 产品特点: 1、文件上传使用增强的FTP协议,用户使用浏览器就可以上传超大文件到服务器(支持上传超过1G的文件)。 2、支持断点续传,系统智能续传未上传的文件,续传操作更简单,更方便,更快捷。 3、支持文件批量上传, 一次可以上传多个文件. 上传时有详细的状态显示(包括单个文件进度,整体进度,传输速率,剩余时间等)。 4、新颖网络免费提供JavaScript SDK包。通过新颖网络提供的封装好的JavaScript类库用户可以快速的与现有系统整合。 5、StorageWebPlug提供完善的接口和帮助文档,开发文档。开发人员可以动态设置上传保存路径, 设置允许扩展名, 允许最大大小等,可自定义强。 6、支持各种代理(HTTP, Socket4, Socket5等)。 7、组件采用多线程机制来保证上传效率。 8、支持批量文件上传, 用户可以一次性上传批量文件. 客户端可以绑定HTML表单变量, 服务端并可以接收表单变量 9、服务端文件保存路径可以随意指定,服务端文件保存路径可以灵活变化。保存路径支持网络路径。 10、为提高安全性,服务端组件可以指定用户权限 11、可以限制上传单个文件大小, 控制上传带宽上限, 允许文件扩展名, 拒绝文件扩展名等 12、上传数据时会根据网络状况来控制数据包大小, 避免网络堵塞 13、控件采用ATL编写, cab包只有59KB, 用56k的modem下载不会超过12秒 14、服务端支持Windows 2000 Server/Windows 2003 Server/Windows NT/Windows XP/Unix/Linux等操作系统 15、通过新颖网络业界领先的设计水平打造的操作界面可以帮助您的系统和产品获得更高的品质。 产品介绍:http://www.ncmem.com/service_storagewebplug.aspx 下载地址:http://www.ncmem.com/download.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值