1.  首选npm安装plupload

2. 阿里云OSS PHP 安全上传

<template><div class="imgUpload">aaa<br><div id="ossfile">你的浏览器不支持flash,Silverlight或者HTML5!</div><div id="container"><a id="selectfiles" href="javascript:void(0);" class="btn">选择文件</a><a id="postfiles" href="javascript:void(0);" class="btn">开始上传</a></div><pre id="console"></pre></div>
</template><script>
import plupload from "plupload";var accessid = "";
var accesskey = "";
var host = "";
var policyBase64 = "";
var signature = "";
var callbackbody = "";
var filename = "";
var key = "";
var expire = 0;
var g_object_name = "";
var g_object_name_type = "";
var now = Date.parse(new Date()) / 1000;
var timestamp = Date.parse(new Date()) / 1000;function send_request() {var xmlhttp = null;if (window.XMLHttpRequest) {xmlhttp = new XMLHttpRequest();} else if (window.ActiveXObject) {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}if (xmlhttp != null) {// serverUrl是 用户获取 '签名和Policy' 等信息的应用服务器的URL,请将下面的IP和Port配置为您自己的真实信息。// serverUrl = 'http://88.88.88.88:8888/aliyun-oss-appserver-php/php/get.php'let serverUrl = "http://xxx/oss/up/";xmlhttp.open("GET", serverUrl, false);xmlhttp.send(null);return xmlhttp.responseText;} else {alert("Your browser does not support XMLHTTP.");}
}function check_object_radio() {var tt = document.getElementsByName("myradio");for (var i = 0; i < tt.length; i++) {if (tt[i].checked) {g_object_name_type = tt[i].value;break;}}
}function get_signature() {// 可以判断当前expire是否超过了当前时间, 如果超过了当前时间, 就重新取一下,3s 作为缓冲。now = timestamp = Date.parse(new Date()) / 1000;if (expire < now + 3) {let body = send_request();var obj = eval("(" + body + ")");host = obj["host"];policyBase64 = obj["policy"];accessid = obj["accessid"];signature = obj["signature"];expire = parseInt(obj["expire"]);callbackbody = obj["callback"];key = obj["dir"];return true;}return false;
}function random_string(len) {len = len || 32;var chars = "ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678";var maxPos = chars.length;var pwd = "";for (i = 0; i < len; i++) {pwd += chars.charAt(Math.floor(Math.random() * maxPos));}return pwd;
}function get_suffix(filename) {let pos = filename.lastIndexOf(".");let suffix = "";if (pos != -1) {suffix = filename.substring(pos);}return suffix;
}function calculate_object_name(filename) {if (g_object_name_type == "local_name") {g_object_name += "${filename}";} else if (g_object_name_type == "random_name") {let suffix = get_suffix(filename);g_object_name = key + random_string(10) + suffix;}return "";
}function get_uploaded_object_name(filename) {if (g_object_name_type == "local_name") {tmp_name = g_object_name;tmp_name = tmp_name.replace("${filename}", filename);return tmp_name;} else if (g_object_name_type == "random_name") {return g_object_name;}
}function set_upload_param(up, filename, ret) {if (ret == false) {ret = get_signature();}g_object_name = key;if (filename != "") {let suffix = get_suffix(filename);calculate_object_name(filename);}let new_multipart_params = {key: g_object_name,policy: policyBase64,OSSAccessKeyId: accessid,success_action_status: "200", //让服务端返回200,不然,默认会返回204
    callback: callbackbody,signature: signature};up.setOption({url: host,multipart_params: new_multipart_params});up.start();
}export default {model: {prop: "msg",event: "ee"},props: {msg: ""},data() {return {url: this.msg || ""};},created() {},mounted() {this.initPlUploader();},methods: {/*** 初始化上传插件*/initPlUploader() {var uploader = new plupload.Uploader({runtimes: "html5,flash,silverlight,html4",browse_button: "selectfiles",//multi_selection: false,// container: document.getElementById('container'),// flash_swf_url : 'lib/plupload-2.1.2/js/Moxie.swf',// silverlight_xap_url : 'lib/plupload-2.1.2/js/Moxie.xap',url: "http://oss.aliyuncs.com",filters: {mime_types: [//只允许上传图片和zip文件{ title: "Image files", extensions: "jpg,gif,png,bmp" },{ title: "Zip files", extensions: "zip,rar,ipa" }],max_file_size: "20mb", //最大只能上传10mb的文件prevent_duplicates: true //不允许选取重复文件
        },init: {PostInit: function() {document.getElementById("ossfile").innerHTML = "";document.getElementById("postfiles").onclick = function() {set_upload_param(uploader, "", false);return false;};},FilesAdded: function(up, files) {plupload.each(files, function(file) {document.getElementById("ossfile").innerHTML +='<div id="' +file.id +'">' +file.name +" (" +plupload.formatSize(file.size) +")<b></b>" +'<div class="progress"><div class="progress-bar" style="width: 0%"></div></div>' +"</div>";});},BeforeUpload: function(up, file) {check_object_radio();set_upload_param(up, file.name, true);},UploadProgress: function(up, file) {var d = document.getElementById(file.id);d.getElementsByTagName("b")[0].innerHTML ="<span>" + file.percent + "%</span>";var prog = d.getElementsByTagName("div")[0];var progBar = prog.getElementsByTagName("div")[0];progBar.style.width = 2 * file.percent + "px";progBar.setAttribute("aria-valuenow", file.percent);},FileUploaded: function(up, file, info) {if (info.status == 200) {document.getElementById(file.id).getElementsByTagName("b")[0].innerHTML ="upload to oss success, object name:" +get_uploaded_object_name(file.name) +" 回调服务器返回的内容是:" +info.response;} else if (info.status == 203) {document.getElementById(file.id).getElementsByTagName("b")[0].innerHTML ="上传到OSS成功,但是oss访问用户设置的上传回调服务器失败,失败原因是:" +info.response;} else {document.getElementById(file.id).getElementsByTagName("b")[0].innerHTML = info.response;}},Error: function(up, err) {if (err.code == -600) {document.getElementById("console").appendChild(document.createTextNode("\n选择的文件太大了,可以根据应用情况,在upload.js 设置一下上传的最大大小"));} else if (err.code == -601) {document.getElementById("console").appendChild(document.createTextNode("\n选择的文件后缀不对,可以根据应用情况,在upload.js进行设置可允许的上传文件类型"));} else if (err.code == -602) {document.getElementById("console").appendChild(document.createTextNode("\n这个文件已经上传过一遍了"));} else {document.getElementById("console").appendChild(document.createTextNode("\nError xml:" + err.response));}}}});uploader.init();}},watch: {}
};
</script><style lang="less" scoped>
@import "./less.less";
</style>

3. 了解更多plupload的配置参考:

前端上传组件Plupload使用指南: https://www.cnblogs.com/2050/p/3913184.html

https://www.jianshu.com/p/b54af6e5539c?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

转载于:https://www.cnblogs.com/xiangsj/p/10882419.html

vue plupload 的使用相关推荐

  1. vue plupload 的使用, 阿里云OSS PHP 安全上传

    1.  首选npm安装plupload 2. 阿里云OSS PHP 安全上传 <template>   <div class="imgUpload">   ...

  2. Vue:利用Plupload插件封装文件上传组件

    接上回<Plupload插件>,已经尝试将Plupload插件引入到HTML页面中,并进行参数配置,然后联合后端接口进行调试,完成了文件上传的工作.但是在Vue项目的开发中,我们更想将它封 ...

  3. vue+videojs视频播放、视频切换、视频断点分段上传

    "本次需求是做一个视频列表,点击视频列表播放对应视频:同时要求实现断点分段上传大文件(视频)的功能 . videojs文档:Getting Started with Video.js - V ...

  4. vue 传base64到后台后台传到oss的java实现

    近期项目中需要将前台vue穿过来base64格式的图片记录保存存到阿里云oss上,通过网上找的一些方法结合自己的实际情况终于实现了,下面直接上代码: 前台vue代码: <template> ...

  5. Vue技巧小结(持续更新)

    1. 动态生成的input自动focus 背景: input元素在需要时才插入DOM,这时元素用autofocus属性第一次是可以获取焦点,但是如果有第二个,就不再生效,所以得另外的办法. 方法: / ...

  6. php plupload上传失败,plupload,多次上传-无效_plupload自动上传,第二次提交无效。,plupload,多次上传-无效 - phpStudy...

    plupload自动上传,第二次提交无效. 1.使用plupload上传单个图片,上传后在页面显示缩略图: 2.使用的是自动上传,点击按钮选择图片后自动开始上传: 3.当第一次上传图片后,图片传错了, ...

  7. canvas java 上传截图_在Vue项目中使用html2canvas生成页面截图并上传

    使用方法 项目中引入 npm install html2canvas html代码 //html代码 js代码 // 引入html2canvas import html2canvas from 'ht ...

  8. vue实现文件上传功能

    代码如下所示: <!DOCTYPE html> <html lang="en"> <head><meta charset="UT ...

  9. win10 4步快速安装vue

    1 安装nvm-windows 在这里下载安装nvm,目的是在同一台电脑中管理多个 Node 版本 建议采取默认安装路径安装 2 安装nodejs 以管理员模式打开命令行,然后输入 nvm list ...

最新文章

  1. 解决Lync联盟用户之间只能IM聊天不能进行A/V呼叫问题
  2. 安装redis及python redis模块
  3. NEO从源码分析看NEOVM
  4. 用户案例 - 3Cs
  5. android recyclerview 横向item 宽度,RecyclerView的item宽度不能全屏显示及线性布局与grid布局切换混乱解决方法...
  6. windows 编写的脚本 无法在linux下运行
  7. 操作系统真象还原_一步步编写操作系统 43 二进制程序的加载方式3
  8. 拓端tecdat|R语言基于树的方法:决策树,随机森林,Bagging,增强树
  9. 我的Qt作品(12)使用Qt+OpenCV实现一个带旋转角度的Shape形状匹配演示软件
  10. android 设置屏幕亮度,android 怎样设置屏幕亮度
  11. The type of the expression must be an array type but it resolved to ListObj
  12. python winrar密码_python+winrar 指令压缩文件 | 学步园
  13. ENVI添加指北针/比例尺
  14. 三循环流水灯电路的原理
  15. 微信分享带图片,描述(php版)
  16. windows批处理脚本bat命令解析【7】EXIT /B 0
  17. Yolo系列目标检测算法知识点总结
  18. 越千年,是谁负了这情长
  19. 使用 AccountManager 实现系统内共享账号
  20. 三维点云数据特征检测

热门文章

  1. idea 项目jdk环境配置
  2. 已解决-‘cv2’ has no attribute ‘gapi_wip_gst_GStreamerPipeline’
  3. 谷歌广告联盟电汇收款指南
  4. JavaScript 的DOM对象
  5. mysql字符串截取函数应用介绍
  6. PIE SDK CommandTool工具命令一览表
  7. 谷歌浏览器控制台如何切换中英文?
  8. boost库在工作(23)任务之三
  9. 1月31日 解决问题的方法( 麦肯锡七步成诗法 )
  10. mysql支持sparql吗_neo4j 中使用sparql查询