ebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS 6+, android 4+。两套运行时,同样的调用方式,可供用户任意选用。采用大文件分片并发上传,极大的提高了文件上传效率。
ShopWind开源电商系统完美的整合了WebUploader上传组件,使得在商品发布、文章发表时候编辑器中能很方便的插入图片,效果如下图所示:
WebUploader图片上传组件上传图片时候默认对超过1600px高度的图片进行宽高等比例压缩,如果是要上传长图又不想让组件把图片压缩需要做些修改。
WebUploader图片上传组件中预留compress参数, 参数类型Object ,可选。这个参数是配置压缩的图片的选项。如果此选项为false, 则图片在上传前不进行压缩。
解决办法:打开文件frontend\controllers\My_goodsController.php,搜索“build_upload” 在create方法中做如下的修改:增加compress 参数,值为false。
件拖拽上传
使用HTML5的文件API, 可以将操作系统中的文件拖放到浏览器的指定区域, 实现文件上传到服务器。本文将结合实例讲解HTML5+jQuery+PHP实现拖拽上传图片的过程, 来看下HTML5的魅力吧。
HTML
我们在页面中放置一个拖拽区域#drop_area, 即接收拖拽的区域, #preview用来预览拖拽上传的图片信息。
<div id="drop_area">将图片拖拽到此区域</div>
<div id="preview"></div>
Javascript
要想实现拖拽, 页面需要阻止浏览器默认行为, 即四个事件(拖离、拖后放、拖进、拖来拖去), 因为我们要阻止浏览器默认将图片打开的行为, 这里我们使用jQuery来完成。
$(function(){
//阻止浏览器默认行。
$(document).on({
dragleave:function(e){ //拖离
e.preventDefault();
},
drop:function(e){ //拖后放
e.preventDefault();
},
dragenter:function(e){ //拖进
e.preventDefault();
},
dragover:function(e){ //拖来拖去
e.preventDefault();
}
});
...
});
接下来我们来了解下文件API。HTML5的文件API有一个FileList接口, 它可以通过e.dataTransfer.files拖拽事件传递的文件信息, 获取本地文件列表信息
var fileList = e.dataTransfer.files;
在本例中, 我们用javascript来侦听drop事件, 首先要判断拖入的文件是否符合要求, 包括图片类型、大小等, 然后获取本地图片信息, 实现预览, 最后上传。
$(function(){
/// ...接上部分
var box = document.getElementById('drop_area'); //拖拽区域
box.addEventListener("drop",function(e){
e.preventDefault(); //取消默认浏览器拖拽效果
var fileList = e.dataTransfer.files; //获取文件对象
//检测是否是拖拽文件到页面的操作
if(fileList.length == 0){
return false;
}
//检测文件是不是图片
if(fileList[0].type.indexOf('image') === -1){
alert("您拖的不是图片!");
return false;
}
//拖拉图片到浏览器,可以实现预览功能
var img = window.URL.createObjectURL(fileList[0]);
var filename = fileList[0].name; //图片名称
var filesize = Math.floor((fileList[0].size)/1024);
if(filesize>500){
alert("上传大小不能超过500K.");
return false;
}
var str = "<img src='"+img+"'><p>图片名称:"+filename+"</p><p>大小:"+filesize+"KB</p>";
$("#preview").html(str);
//上传
xhr = new XMLHttpRequest();
xhr.open("post", "upload.php", true);
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
var fd = new FormData();
fd.append('mypic', fileList[0]);
xhr.send(fd);
},false);
});
我们用FormData模拟表单数据, 直接将数据append到formdata对象中, 实现了ajax上传。
PHP
upload.php用于接收上传的文件信息, 完成上传, 实现代码如下:
<?php
$mypic = $_FILES["mypic"];
if(!empty($mypic)){
$picname = $_FILES['mypic']['name'];
$picsize = $_FILES['mypic']['size'];
if ($picsize > 512000) {
echo '图片大小不能超过500k';
exit;
}
$type = strstr($picname, '.');
if ($type != ".gif" && $type != ".jpg") {
echo '图片格式不对!';
exit;
}
$pics = 'helloweba' . $type;
//上传路径
$pic_path = "pics/". $pics;
move_uploaded_file($mypic["tmp_name"],$pic_path);
}
?>
下边这几句可以没有
<meta charset="utf-8">
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="mypic">
<input type="submit" value="上传">
</form>
最后总结下HTML5实现拖拽上传的技术要点:
1、监听拖拽:监听页面元素的拖拽事件, 包括:dragenter、dragover、dragleave和drop, 一定要将dragover的默认事件取消掉, 不然无法触发drop事件。如需拖拽页面里的元素, 需要给其添加属性draggable=”true”;
2、获取拖拽文件:在drop事件触发后通过e.dataTransfer.files获取拖拽文件列表, .length属性获取文件数量, .type属性获取文件类型。
3、读取图片数据并添加预览图。
4、发送图片数据:使用FormData模拟表单数据AJAX提交文件流。
UE项目中的TINYMCE富文本编辑器如何从WORD中粘贴图片上传到七牛云,富文本插件TINYMCE使用CTRL+V粘贴图片上传到远程服务器,关于tinymce粘贴图片,粘贴word,一键导入word,粘贴word内容,网上能找到的方案不是特别多,都是通过HTML5提供的API来实现的。
粘贴word内容,粘贴word图片,粘贴word图文,
之前在网上也找过相关的资料,论坛里面也有网友交流过,也加过一些交流群,但是几乎都不能够提供成熟完整的商业解决方案。
大部分文章和回复都不太靠谱,基本上都是没有实际的项目应用经验。
复制word内容然后粘贴到tinymce富文本编辑器中,word里面的图片自动上传到服务器中,返回图片和文字HTML,保留word文字的样式,字体大小,字体颜色。
可以用快捷键(Ctrl+V)操作,
用户发布新闻的时候是从word里面复制图片和文字,然后将word图文内容粘贴到web富文本编辑器中,希望能够将word的图片自动上传到服务器中,服务器地址能够自定义,
后端的话需要支持任意开发语言,比如ASP,ASP.NET,JSP,PHP,PYTHON等。只要是基于标准HTTP协议的都要支持。如果能够不装控件最好,下载示例
https://gitee.com/xproer/wordpaster-vue-tinymce5
1.复制插件文件
安装jquery
npm install jquery
2.在组件中引入
添加工具栏
在线代码:https://gitee.com/xproer/wordpaster-vue-tinymce5/blob/master/src/components/tinymce.vue#L44
添加插件
在线代码:https://gitee.com/xproer/wordpaster-vue-tinymce5/blob/master/src/components/tinymce.vue
初始化wordpaster组件
3.在页面中引入组件
整合效果:
订阅版报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAw70JsA8m
政企版报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwuqJtN30#/
年费版报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwFouDIB4#/
OEM版报价单:https://drive.weixin.qq.com/s?k=ACoAYgezAAwV00mQSY
产品源代码:https://drive.weixin.qq.com/s?k=ACoAYgezAAwz13B5Tr
*请认真填写需求信息,我们会在24小时内与您取得联系。