前端上传组件Plupload使用指南

我之前写过一篇文章《文件上传利器SWFUpload使用指南》,里面介绍了上传组件SWFUpload的使用方法,但现在随着html5技术的逐渐推广和普及,再去使用以flash为上传手段的SWFUpload显然就有点过时了,毕竟html5原生的就给我们提供了文件上传的API。Plupload是一款由著名的web编辑器TinyMCE团队开发的上传组件,简单易用且功能强大,我们完全可以使用Plupload来代替以前的SWFUpload。

Plupload有以下功能和特点:

1、拥有多种上传方式:HTML5、flash、silverlight以及传统的<input type=”file” />。Plupload会自动侦测当前的环境,选择最合适的上传方式,并且会优先使用HTML5的方式。所以你完全不用去操心当前的浏览器支持哪些上传方式,Plupload会自动为你选择最合适的方式。

2、支持以拖拽的方式来选取要上传的文件

3、支持在前端压缩图片,即在图片文件还未上传之前就对它进行压缩

4、可以直接读取原生的文件数据,这样的好处就是例如可以在图片文件还未上传之前就能把它显示在页面上预览

5、支持把大文件切割成小片进行上传,因为有些浏览器对很大的文件比如几G的一些文件无法上传。

 

Plupload的使用方法也与SWFUpload非常类似,可以分为以下几步:

1、引入js文件

2、实例化一个plupload对象,传入一个配置参数对象进行各方面的配置。

3、调用plupload实例对象的init()方法进行初始化

4、在plupload实例对象上注册各种你需要的事件。plupload从选取文件到文件上传完成这个过程中,会触发很多事件。我们可以通过这些事件来跟plupload进行交互。

5、实现你自己所注册的那些事件的监听函数,利用这些监听函数来进行更新UI、提示上传进度等工作。

大家可以到http://chaping.github.io/plupload/demo/看一下我写的关于plupload的几个上传demo。

下面用一段代码来说明Plupload的使用方法。

首先看下我的目录结构

目录结构

index.html的代码如下:

复制代码
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Plupload使用指南</title><!-- 首先需要引入plupload的源代码 --><script src="js/plupload.full.min.js"></script>
</head>
<body><!-- 这里我们只使用最基本的html结构:一个选择文件的按钮,一个开始上传文件的按钮(甚至该按钮也可以不要) --><p><button id="browse">选择文件</button><button id="start_upload">开始上传</button></p><script>//实例化一个plupload上传对象var uploader = new plupload.Uploader({browse_button : 'browse', //触发文件选择对话框的按钮,为那个元素id
        url : 'upload.php', //服务器端的上传页面地址
        flash_swf_url : 'js/Moxie.swf', //swf文件,当需要使用swf方式进行上传时需要配置该参数
        silverlight_xap_url : 'js/Moxie.xap' //silverlight文件,当需要使用silverlight方式进行上传时需要配置该参数
    });    //在实例对象上调用init()方法进行初始化
    uploader.init();//绑定各种事件,并在事件监听函数中做你想做的事
    uploader.bind('FilesAdded',function(uploader,files){//每个事件监听函数都会传入一些很有用的参数,//我们可以利用这些参数提供的信息来做比如更新UI,提示上传进度等操作
    });uploader.bind('UploadProgress',function(uploader,file){//每个事件监听函数都会传入一些很有用的参数,//我们可以利用这些参数提供的信息来做比如更新UI,提示上传进度等操作
    });//......//......//最后给"开始上传"按钮注册事件
    document.getElementById('start_upload').onclick = function(){uploader.start(); //调用实例对象的start()方法开始上传文件,当然你也可以在其他地方调用该方法
    }</script>
</body>
</html>
复制代码

 

使用Plupload的关键是了解它众多的配置参数、事件以及属性和方法。我把它官网上的文档翻译成了中文并整理如下。我也把它放到了github上,你可以到http://chaping.github.io/plupload/doc/去查阅。

目录:



一、配置参数

二、各种事件说明

三、Plupload实例的属性

四、Plupload实例的方法

五、文件对象的属性和方法

六、QueueProgress 对象的属性

七、plupload命名空间上的一些属性

一、配置参数

实例化一个plupload对象时,也就是 new plupload.Uploader(),需要传入一个对象作为配置参数。后面内容中出现的plupload实例均是指new plupload.Uploader()得到的实例对象

属性类型默认值描述
browse_buttonString / DOM 触发文件选择对话框的DOM元素,当点击该元素后便后弹出文件选择对话框。该值可以是DOM元素对象本身,也可以是该DOM元素的id
urlString 服务器端接收和处理上传文件的脚本地址,可以是相对路径(相对于当前调用Plupload的文档),也可以是绝对路径
filtersObject{ }可以使用该参数来限制上传文件的类型,大小等,该参数以对象的形式传入,它包括三个属性:

mime_types:用来限定上传文件的类型,为一个数组,该数组的每个元素又是一个对象,该对象有title和extensions两个属性,title为该过滤器的名称,extensions为文件扩展名,有多个时用逗号隔开。该属性默认为一个空数组,即不做限制。

max_file_size:用来限定上传文件的大小,如果文件体积超过了该值,则不能被选取。值可以为一个数字,单位为b,也可以是一个字符串,由数字和单位组成,如'200kb'

prevent_duplicates:是否允许选取重复的文件,为true时表示不允许,为false时表示允许,默认为false。如果两个文件的文件名和大小都相同,则会被认为是重复的文件

filters完整的配置示例如下(当然也可以只配置其中的某一项):

filters: {mime_types : [ //只允许上传图片和zip文件{ title : "Image files", extensions : "jpg,gif,png" }, { title : "Zip files", extensions : "zip" }],max_file_size : '400kb', //最大只能上传400kb的文件prevent_duplicates : true //不允许选取重复文件
}
headersObject 设置上传时的自定义头信息,以键/值对的形式传入,键代表头信息属性名,键代表属性值。html4上传方式不支持设置该属性。
multipartBooleantruetrue时将以multipart/form-data的形式来上传文件,为false时则以二进制的格式来上传文件。html4上传方式不支持以二进制格式来上传文件,在flash上传方式中,二进制上传也有点问题。并且二进制格式上传还需要在服务器端做特殊的处理。一般我们用multipart/form-data的形式来上传文件就足够了。
multipart_paramsObject 上传时的附加参数,以键/值对的形式传入,服务器端可是使用$_POST来获取这些参数(以php为例)。比如:
multipart_params: {one: '1',two: '2',three: { //值还可以是一个字面量对象a: '4',b: '5'},four: ['6', '7', '8']  //也可以是一个数组
}
max_retriesNumber0当发生plupload.HTTP_ERROR错误时的重试次数,为0时表示不重试
chunk_sizeNumber/String0分片上传文件时,每片文件被切割成的大小,为数字时单位为字节。也可以使用一个带单位的字符串,如"200kb"。当该值为0时表示不使用分片上传功能
resizeObject 可以使用该参数对将要上传的图片进行压缩,该参数是一个对象,里面包括5个属性:

width:指定压缩后图片的宽度,如果没有设置该属性则默认为原始图片的宽度

height:指定压缩后图片的高度,如果没有设置该属性则默认为原始图片的高度

crop:是否裁剪图片

quality:压缩后图片的质量,只对jpg格式的图片有效,默认为90。quality可以跟widthheight一起使用,但也可以单独使用,单独使用时,压缩后图片的宽高不会变化,但由于质量降低了,所以体积也会变小

preserve_headers:压缩后是否保留图片的元数据,true为保留,false为不保留,默认为true。删除图片的元数据能使图片的体积减小一点点

resize参数的配置示例如下:

resize: {width: 100,height: 100,crop: true,quality: 60,preserve_headers: false
}
drop_elementDOM/String/Array 指定了使用拖拽方式来选择上传文件时的拖拽区域,即可以把文件拖拽到这个区域的方式来选择文件。该参数的值可以为一个DOM元素的id,也可是DOM元素本身,还可以是一个包括多个DOM元素的数组。如果不设置该参数则拖拽上传功能不可用。目前只有html5上传方式才支持拖拽上传。
multi_selectionBooleantrue是否可以在文件浏览对话框中选择多个文件,true为可以,false为不可以。默认true,即可以选择多个文件。需要注意的是,在某些不支持多选文件的环境中,默认值是false。比如在ios7的safari浏览器中,由于存在bug,造成不能多选文件。当然,在html4上传方式中,也是无法多选文件的。
required_featuresMix 可以使用该参数来设置你必须需要的一些功能特征,Plupload会根据你的设置来选择合适的上传方式。因为,不同的上传方式,支持的功能是不同的,比如拖拽上传只有html5上传方式支持,图片压缩则只有html5,flash,silverlight上传方式支持。该参数的值是一个混合类型,可以是一个以逗号分隔的字符串,
unique_namesBooleanfalse当值为true时会为每个上传的文件生成一个唯一的文件名,并作为额外的参数post到服务器端,参数明为name,值为生成的文件名。
runtimesStringhtml5,flash,
silverlight,
html4
用来指定上传方式,指定多个上传方式请使用逗号隔开。一般情况下,你不需要配置该参数,因为Plupload默认会根据你的其他的参数配置来选择最合适的上传方式。如果没有特殊要求的话,Plupload会首先选择html5上传方式,如果浏览器不支持html5,则会使用flash或silverlight,如果前面两者也都不支持,则会使用最传统的html4上传方式。如果你想指定使用某个上传方式,或改变上传方式的优先顺序,则你可以配置该参数。
file_data_name Stringfile指定文件上传时文件域的名称,默认为file,例如在php中你可以使用$_FILES['file']来获取上传的文件信息
container DOM/String 用来指定Plupload所创建的html结构的父容器,默认为前面指定的browse_button的父元素。该参数的值可以是一个元素的id,也可以是DOM元素本身。
flash_swf_url Stringjs/Moxie.swfflash上传组件的url地址,如果是相对路径,则相对的是调用Plupload的html文档。当使用flash上传方式会用到该参数。
silverlight_xap_url Stringjs/Moxie.xapsilverlight上传组件的url地址,如果是相对路径,则相对的是调用Plupload的html文档。当使用silverlight上传方式会用到该参数。

二、各种事件说明

要了解plupload的运行状况,靠的就是在这些事件了

Init
当Plupload初始化完成后触发

监听函数参数:(uploader)

uploader为当前的plupload实例对象

PostInit
当Init事件发生后触发

监听函数参数:(uploader)

uploader为当前的plupload实例对象

OptionChanged
当使用Plupload实例的setOption()方法改变当前配置参数后触发

监听函数参数:(uploader,option_name,new_value,old_value)

uploader为当前的plupload实例对象,option_name为发生改变的参数名称,new_value为改变后的值,old_value为改变前的值

Refresh
当调用plupload实例的refresh()方法后会触发该事件,暂时不清楚还有什么其他动作会触发该事件,但据我测试,把文件添加到上传队列后也会触发该事件。

监听函数参数:(uploader)

uploader为当前的plupload实例对象

StateChanged
当上传队列的状态发生改变时触发

监听函数参数:(uploader)

uploader为当前的plupload实例对象

UploadFile
当上传队列中某一个文件开始上传后触发

监听函数参数:(uploader,file)

uploader为当前的plupload实例对象,file为触发此事件的文件对象

BeforeUpload
当队列中的某一个文件正要开始上传前触发

监听函数参数:(uploader,file)

uploader为当前的plupload实例对象,file为触发此事件的文件对象

QueueChanged
当上传队列发生变化后触发,即上传队列新增了文件或移除了文件。QueueChanged事件会比FilesAdded或FilesRemoved事件先触发

监听函数参数:(uploader)

uploader为当前的plupload实例对象

UploadProgress
会在文件上传过程中不断触发,可以用此事件来显示上传进度

监听函数参数:(uploader,file)

uploader为当前的plupload实例对象,file为触发此事件的文件对象

FilesRemoved
当文件从上传队列移除后触发

监听函数参数:(uploader,files)

uploader为当前的plupload实例对象,files为一个数组,里面的元素为本次事件所移除的文件对象

FileFiltered
暂不清楚该事件的意义,但根据测试得出,该事件会在每一个文件被添加到上传队列前触发

监听函数参数:(uploader,file)

uploader为当前的plupload实例对象,file为触发此事件的文件对象

FilesAdded
当文件添加到上传队列后触发

监听函数参数:(uploader,files)

uploader为当前的plupload实例对象,files为一个数组,里面的元素为本次添加到上传队列里的文件对象

FileUploaded
当队列中的某一个文件上传完成后触发

监听函数参数:(uploader,file,responseObject)

uploader为当前的plupload实例对象,file为触发此事件的文件对象,responseObject为服务器返回的信息对象,它有以下3个属性:

response:服务器返回的文本

responseHeaders:服务器返回的头信息

status:服务器返回的http状态码,比如200

ChunkUploaded
当使用文件小片上传功能时,每一个小片上传完成后触发

监听函数参数:(uploader,file,responseObject)

uploader为当前的plupload实例对象,file为触发此事件的文件对象,responseObject为服务器返回的信息对象,它有以下5个属性:

offset:该文件小片在整体文件中的偏移量

response:服务器返回的文本

responseHeaders:服务器返回的头信息

status:服务器返回的http状态码,比如200

total:该文件(指的是被切割成了许多文件小片的那个文件)的总大小,单位为字节

UploadComplete
当上传队列中所有文件都上传完成后触发

监听函数参数:(uploader,files)

uploader为当前的plupload实例对象,files为一个数组,里面的元素为本次已完成上传的所有文件对象

Error
当发生触发时触发

监听函数参数:(uploader,errObject)

uploader为当前的plupload实例对象,errObject为错误对象,它至少包含以下3个属性(因为不同类型的错误,属性可能会不同):

code:错误代码,具体请参考plupload上定义的表示错误代码的常量属性

file:与该错误相关的文件对象

message:错误信息

Destroy
当调用destroy方法时触发

监听函数参数:(uploader)

uploader为当前的plupload实例对象

三、Plupload实例的属性

属性描述
idPlupload实例的唯一标识id
state当前的上传状态,可能的值为plupload.STARTEDplupload.STOPPED,该值由Plupload实例的stop()statr()方法控制。默认为plupload.STOPPED
runtime当前使用的上传方式
files当前的上传队列,是一个由上传队列中的文件对象组成的数组
settings当前的配置参数对象
total表示总体进度信息的QueueProgress对象

四、Plupload实例的方法

方法描述
init()初始化Plupload实例
setOption(option, [value])设置某个特定的配置参数,option为参数名称,value为要设置的参数值。option也可以为一个由参数名和参数值键/值对组成的对象,这样就可以一次设定多个参数,此时该方法的第二个参数value会被忽略。
getOption([option])获取当前的配置参数,参数option为需要获取的配置参数名称,如果没有指定option,则会获取所有的配置参数
refresh()刷新当前的plupload实例,暂时还不明白什么时候需要使用
start()开始上传队列中的文件
stop()停止队列中的文件上传
disableBrowse(disable)禁用或启用plupload的文件浏览按钮,参数disabletrue时为禁用,为false时为启用。默认为true
getFile(id)通过id来获取文件对象
addFile(file, [fileName])向上传队列中添加文件,如果成功添加了文件,会触发FilesAdded事件。参数file为要添加的文件,可以是一个原生的文件,或者一个plupload文件对象,或者一个input[type="file"]元素,还可以是一个包括前面那几种东西的数组;fileName为给该文件指定的名称
removeFile(file)从上传队列中移除文件,参数file为plupload文件对象或先前指定的文件名称
splice(start, length)从上传队列中移除一部分文件,start为开始移除文件在队列中的索引,length为要移除的文件的数量,该方法的返回值为被移除的文件。该方法会触发FilesRemoved QueueChanged事件
trigger(name, Multiple)触发某个事件。name为要触发的事件名称,Multiple为传给该事件监听函数的参数,是一个对象
hasEventListener(name)用来判断某个事件是否有监听函数,name为事件名称
bind(name, func, scope)给某个事件绑定监听函数,name为事件名,func为监听函数,scope为监听函数的作用域,也就是监听函数中this的指向
unbind(name, func)移除事件的监听函数,name为事件名称,func为要移除的监听函数
unbindAll()移除所有事件的所有监听函数
destroy()销毁plupload实例

五、文件对象的属性和方法

在很多事件监听函数中,都会提供文件对象给你

属性/方法描述
id 文件id
name 文件名,例如"myfile.gif"
type 文件类型,例如"image/jpeg"
size 文件大小,单位为字节,当启用了客户端压缩功能后,该值可能会改变
origSize 文件的原始大小,单位为字节
loaded 文件已上传部分的大小,单位为字节
percent 文件已上传部分所占的百分比,如50就代表已上传了50%
status 文件的状态,可能为以下几个值之一:plupload.QUEUED, plupload.UPLOADING, plupload.FAILED, plupload.DONE
lastModifiedDate 文件最后修改的时间
getNative() 获取原生的文件对象
getSource() 获取mOxie.File 对象,想了解mOxie是什么东西,可以看下https://github.com/moxiecode/moxie/wiki/API
destroy() 销毁文件对象

六、QueueProgress 对象的属性

plupload实例的total属性是一个QueueProgress对象

属性描述
size 上传队列中所有文件加起来的总大小,单位为字节
loaded 队列中当前已上传文件加起来的总大小,单位为字节
uploaded 已完成上传的文件的数量
failed 上传失败的文件数量
queued 队列中剩下的(也就是除开已经完成上传的文件)需要上传的文件数量
percent 整个队列的已上传百分比,如50就代表50%
bytesPerSec 上传速率,单位为 byte/s,也就是 字节/秒

七、plupload命名空间上的一些属性

plupload的命名空间上有一些属性,用来表示一些常量。记住,不是plupload实例的属性,而是plupload的属性

属性名称描述
VERSION当前plupload的版本号
STOPPED值为1,代表上传队列还未开始上传或者上传队列中的文件已经上传完毕时plupload实例的state属性值
STARTED值为2,代表队列中的文件正在上传时plupload实例的state属性值
QUEUED值为1,代表某个文件已经被添加进队列等待上传时该文件对象的status属性值
UPLOADING值为2,代表某个文件正在上传时该文件对象的status属性值
FAILED值为4,代表某个文件上传失败后该文件对象的status属性值
DONE值为5,代表某个文件上传成功后该文件对象的status属性值
GENERIC_ERROR值为-100,发生通用错误时的错误代码
HTTP_ERROR值为-200,发生http网络错误时的错误代码,例如服务气端返回的状态码不是200
IO_ERROR值为-300,发生磁盘读写错误时的错误代码,例如本地上某个文件不可读
SECURITY_ERROR值为-400,发生因为安全问题而产生的错误时的错误代码
INIT_ERROR值为-500,初始化时发生错误的错误代码
FILE_SIZE_ERROR值为-600,当选择的文件太大时的错误代码
FILE_EXTENSION_ERROR值为-601,当选择的文件类型不符合要求时的错误代码
FILE_DUPLICATE_ERROR值为-602,当选取了重复的文件而配置中又不允许有重复文件时的错误代码
IMAGE_FORMAT_ERROR 值为-700,发生图片格式错误时的错误代码
IMAGE_MEMORY_ERROR当发生内存错误时的错误代码
IMAGE_DIMENSIONS_ERROR值为-702,当文件大小超过了plupload所能处理的最大值时的错误代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5简易在线画图工具

HTML5简易在线画图工具 原文:HTML5简易在线画图工具继上次学习了HTML5的路径画圆做了动态时钟、异次元空间的反转做了运动的太阳系&#xff0c;这两天将画线、画圆、填充等知识点结合起来做了一个简易的在线画图工具&#xff1a; 查看DEMO&#xff1a;HTML5简易在线画图工具 功…

【excel技巧读书笔记001】清除打开过的文件记录

我们在工作的时候经常打开工作薄&#xff0c;这些工作薄都会在最近使用的工作薄列表看到&#xff0c;如果不希望别人看到自己打开过的记录&#xff0c;可以将最近使用的工作薄列表清空。具体步骤如下&#xff1a;1.【文件】-【选项】-【高级】-【显示】显示此数目的最近使用文档…

快速开发系统之前台页面 ---- NO1----登录页面

2019独角兽企业重金招聘Python工程师标准>>> 快速开发系统之前台页面 ---- NO1----登录页面 <% page language"java" contentType"text/html; charsetutf-8"pageEncoding"utf-8"%> <!DOCTYPE html> <html lang"z…

HP服务器F10 Function Disabled,无法使用F10安装操作系统

HP惠普服务器正确安装操作系统的方法是使用F10引导安装&#xff0c;可以自动安装操作系统&#xff0c;与硬件结合的更好&#xff0c;而且安装完成后&#xff0c;如果是windows操作系统&#xff0c;可以有HP管理页。某次&#xff0c;在使用F10引导安装操作系统的时候&#xff0c…

apt-get for ubuntu 工具简介

先介绍几个和apt-get相关的目录: /var/lib/dpkg/available 文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 Debian 安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包. /var/cache/apt/archives 目录是在用 apt-get install 安装软件时&#xff0c…

【VMCloud云平台】SCAP(一)规划

完成了System Center中的悍将SCO基础篇后&#xff0c;咱们来聊聊SCAP&#xff0c;很多人说SCAP是一个简单的组件&#xff0c;何必单独拿出来聊呢&#xff1f;我倒是认为不然&#xff0c;作为System Center中为数不多的主打Portal类型的组件&#xff08;除开组件的Web Console就…

android学习日记12--布局管理器

1、概述  布局管理器的用途&#xff1a;  a、可以更好的管理组件;  b、通过使用布局管理器&#xff0c;Android应用程序可以做到平台无关性 布局管理器都是ViewGroup的子类&#xff0c;所有可充当容器的父类都是ViewGroup&#xff0c;而ViewGroup也是View的子类 下面分别…

PXE装机+kickstart无人值守安装

搭建PXE远程安装服务器&#xff0c;本例集成了TFTP服务、DHCP服务&#xff0c;能够向客户机发送PXE引导程序&#xff0c;内核&#xff0c;启动菜单等。1.准备RHEL6安装源&#xff0c;网络安装源一般通过HTTP&#xff0c;FTP协议发布&#xff0c;另外页支撑NFS协议。采用FTP协议…

内核通识——内核中架构相关代码简介

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 1、内核代码基本分为3块 &#xff08;1&#xff09;arch目录 本目录下全是cpu架构有关的代码。本文说的就是这个目录中的内容。 &#xff08;2&#xff09;drivers目录 本目录下全是硬件的驱动。 &…

一道关于比赛胜负的Sql查询题目

以前做过一道题目&#xff0c;一直没有来得及总结下来。贴图&#xff1a; 记得以前曾经找到了两种方法&#xff0c;今天试了一下&#xff0c;还是可以的&#xff0c;贴出过程&#xff1a; 下面是具体的查询方法&#xff1a; 原来放的是图片,今天又练习了一下,附代码: 1 create …

SharePoint 2013 Nintex Workflow 工作流帮助(六)

博客地址 http://blog.csdn.net/foxdave 工作流动作 7. Call web service&#xff08;Integration分组&#xff09; 一个调用WebService的操作。 自然&#xff0c;配置项中主要是指向一个WebService进行调用。 关于配置项的说明&#xff1a; URL 必填项&#xff0c;也就是WebSe…

uboot的移植一一更换控制台串口

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 1、场景需求 X210开发板的SOC中一共有4个串口&#xff08;串口0~3&#xff09;&#xff0c;并且用DB9接口引出了2个串口&#xff0c;分别是串口0和串口2。其中靠近网口的是串口0&#xff0c;远离网口…

充实你的素材库!10款免费的 PSD 素材下载

由于网页设计师没有时间来自己从零开始设计&#xff0c;所以在设计项目中使用网络上已有的设计素材是常见的方式。这就是为什么我们经常会到网上搜索可以免费下载的素材。 今天&#xff0c;我们这里有几套不同的免费的 PSD 素材分享给你&#xff0c;从 iPhone 样机到用户界面等…

position:fixed和scroll实现div浮动【示例】

前言 在自己建站的过程中&#xff0c;要实现一个div随滚动条浮动的效果&#xff0c;网上找了些示例不太好用&#xff0c;还是自己动手&#xff0c;丰衣足食&#xff0c;写的不好请大家谅解&#xff0c;毕竟我不是搞前端的&#xff0c;因为自己建站毕竟每一步都必须自己来&#…

HashMap vs ConcurrentHashMap — 示例及Iterator探秘

2019独角兽企业重金招聘Python工程师标准>>> 如果你是一名Java开发人员&#xff0c;我能够确定你肯定知道ConcurrentModificationException&#xff0c;它是在使用迭代器遍历集合对象时修改集合对象造成的&#xff08;并发修改&#xff09;异常。实际上&#xff0c;…

谷歌浏览器跨域报错解决办法

谷歌浏览器跨域报错&#xff1a; 在浏览器属性设置一下就可以了。 最后&#xff0c;先打开浏览器&#xff0c;就可以了。 转载于:https://www.cnblogs.com/fanyun/p/4263363.html

Unable to find the ncurses libraries or the required header files解决

问题&#xff1a; 解决方法: sudo apt-get install ncurses-dev 参考&#xff1a;Unable to find the ncurses libraries or the required header files解决 转载于:https://www.cnblogs.com/amanlikethis/p/3591353.html

iOS自动布局进阶用法

本文主要介绍几个我遇到并总结的相对高级的用法&#xff08;当然啦牛人会觉得这也不算什么&#xff09;。 简单的storyboard中上下左右约束&#xff0c;固定宽高啥的用法在这里就不做赘述了。 autolayout自动布局是iOS6以后出现的&#xff0c;但是在开始的一段时间里大家并不怎…

Windows系统与Linux系统下的硬盘分区操作

以下内容源于网络资源的学习与整理&#xff0c;如有其侵权请告知删除。 之前在uboot中利用fdisk命令对X210开发板的iNand进行分区时&#xff0c; 因为不小心在uboot中利用“fdisk -c 1”&#xff08;1对应着sd卡&#xff0c;0对应着iNand&#xff09;对sd卡也分区了&#xff…

您应该了解的 Windows Azure 网站在线工具

&#xfeff;&#xfeff;编辑人员注释&#xff1a;本文章由Windows Azure 网站团队的软件开发者 Amit Apple 撰写。 如果想要了解并亲身参与计算资源管理&#xff0c;那么您一定会很高兴得知这一消息&#xff1a;Windows Azure 网站现在提供一些非常有用的在线工具&#xff0c…