Skip to content

一个可断点续传的上传客户端使用(HTML5跟Flash) PHP为服务端

License

Notifications You must be signed in to change notification settings

qpwoeiru96/QUpload

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

什么是QUpload?

QUpload是一个使用PHP + HTML5、Flash的断点续传解决方案。可以说他不仅仅是一个软件而是一套软件。

QUpload有什么特点?

  1. 服务端纯php实现无需安装其他的扩展(PHP_VERSION >= 5.3.0)。
  2. 文件上传大小不受 upload_max_filesize 和 post_max_size 这两个配置的限制(因为使用了分块上传技术)。不过需要注意的是web容器比如IIS跟Nginx的最大支持请求主体的设置:确认 applicationhost.config 或 web.config 文件中的 configuration/system.webServer/security/requestFiltering/requestLimits@maxAllowedContentLength 设置。
  3. 兼容性好(支持IE6+ Chrome Firefox ...) 反正HTML5跟Flash至少有一项么。
  4. 支持断点续传。
  5. 自带过期内容清除机制。
  6. 上传大文件服务端占用内存小。

客户端如何使用?

引入脚本

//jQuery.js(1.9以上2.0以下的版本都可以吧) 和 QUpload.js
<script src="http://libs.baidu.com/jquery/1.10.2/jquery.min.js"></script>
<script src="qupload.js"></script>

实例化QUpload

var u = new QUpload({
    tokenUrl: '/QUpload/token',
    uploadUrl: '/QUpload/upload',
    swfPath: 'qupload.swf',
    maxFileSize: 134217728,
    allowedExt: 'gif|jpg|png|zip|rar'
});

配置项说明

tokenUrl: 获取令牌的地址
uploadUrl: 上传文件地址
swfPath: Flash文件地址
maxFileSize: 文件上传的最大大小
allowedExt: 允许上传的文件扩展名称 以|为间隔

接口说明

/**
 * 注入某个元素 点击该元素即可选择上传文件(就是在此元素上面覆盖了一透明层)
 * @param ElementNode elem 
 * @return void
 */
QUpload::inject(elem:ElementNode):void
 
/**
 * 开始上传文件
 * @return void
 */
QUpload::upload():void
 
/**
 * 重置上传环境
 */
QUplpad::reset():void
 
/**
 * 断开文件上传
 * @return void
 */
QUpload::abort():void
 
 
/**
 * 添加事件监听
 * @param String eventName
 * @param Function listener
 * @return void
 */
QUpload::addEventListener(eventName:String, listener:Function):void
 
/**
 * 移除事件监听
 * @param String eventName
 * @param Function listener
 * @return void
 */
QUpload::removeEventListener(eventName:String, listener:Function):void

客户端事件

/**
 * 上传进度事件
 * @param Number loadedByte 已加载的字节数
 * @param Number totalByte 剩余未加载的字节数
 */
QUpload.PROGRESS
 
/**
 * 上传错误事件
 * @param String message 错误信息
 * @param Number code 错误代码
 */
QUpload.ERROR
 
/**
 * 上传完成事件
 * @param String token 上传文件令牌 根据此令牌可以去服务端获得指定的文件
 */
QUpload.COMPLETE

/**
 * 文件选择完成事件
 * @param Object file 选择的文件信息 包含name(文件名称) size(文件大小) time(文件修改时间)
 */
QUpload.SELECT

客户端错误

声明:错误分两种错误一种是本地错误,一般是网络错误,本地错误一般是文件不符合需求会重置上传,错误号以1开头,网络错误是2开头,会中断上传。其他错误以3开头代表逻辑错误,比如未选文件就开始上传。

101: '文件类型不符合需求, 所需: %s, 实际: %s。'
102: '文件大小超过限制,最大大小: %s,实际大小: %s。'
201: '服务器出错,上传失败,请重试。'
301: '请先选择文件再进行上传。'

目前造成网络错误的原因比较多,为了不给使用者造成困扰,所以统一为201。(PS: 特别是Flash上传的时候请注意如果swf文件地址跟上传地址不在一个地方的时候请注意你的crossdomain.xml是否已经存在并且设置正确。否则会触发安全错误。)

服务端如何使用?

尚待补上 可参加DEMO。

About

一个可断点续传的上传客户端使用(HTML5跟Flash) PHP为服务端

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published