# 文件上传
零云默认使用了百度的webuploader插件来实现文件上传,除了使用这个,当然你也可以自己使用自己熟悉的插件,插件请放到/Application/当前模块/View/Public/libs目录下然后用__LIBS__/test.min.js调用
## 说明
如果在一个页面中有2个以上上传按钮,请注意修改按钮的唯一ID不要冲突。
![](/Uploads/manual/image/2018-10-27/5bd439ade6087.png)
## 示例
```html
<extend name="$_home_public_layout"/>
<block name="style">
<style type="text/css">
#preview-pane .preview-container {
width: 200px;
height: 200px;
overflow: hidden;
}
</style>
</block>
<block name="main">
<div class="container">
<div class="row">
<div class="col-xs-12 col-md-9">
<div class="panel panel-default">
<div class="panel-body">
<div class="m-t-md">
<h4>上传自定义头像</h4>
<form method="post" action="{:U('User/Center/avatar')}" class="avatar-form">
<div class="form-group">
<div id="crop-pane" class="row">
<div id="upload_list" class="uploader-list col-xs-12 img-box">
<div id="upload_preview" class="col-md-4 file-item thumbnail m-b-xs">
<img class="crop" src="">
</div>
</div>
</div>
</div>
<div class="form-group">
<input type="hidden" name="avatar" id="upload-avatar-src">
<a id="upload-avatar-button" class="btn btn-primary m-b">上传头像按钮</a>
<button type="submit" class="submit btn btn-success m-b ajax-posts" target-form="avatar-form">保存头像</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</block>
<block name="script">
<script type="text/javascript" src="__PUBLIC__/libs/webuploader/webuploader.min.js"></script>
<script type="text/javascript">
$(function(){
// 上传头像
var uploader = WebUploader.create({
withCredentials: true,
auto: true,
duplicate: true,
server: '{:U(MODULE_MARK."/Upload/upload", array("temp" => "true"), true, true)}',
pick: '#upload-avatar-button',
resize: false,
fileNumLimit: 20,
fileSingleSizeLimit: "<php> echo C('UPLOAD_FILE_SIZE') ? : 2; </php>*1024*1024",
accept: {
title: 'Images',
extensions: 'gif,jpg,jpeg,bmp,png',
mimeTypes: 'image/gif,image/jpg,image/jpeg,image/bmp,image/png'
}
});
// 文件上传过程中创建进度条实时显示。
uploader.on( 'uploadProgress', function( file, percentage ) {
$( '#upload_preview').removeClass('hidden');
var $li = $('#upload_preview'),
$percent = $li.find('.progress .progress-bar');
// 避免重复创建
if ( !$percent.length ) {
$percent = $('<div class="progress"><div class="progress-bar"></div></div>').appendTo( $li ).find('.progress-bar');
}
$percent.css( 'width', percentage * 100 + '%' );
});
// 完成上传完了,成功或者失败,先删除进度条。
uploader.on( 'uploadComplete', function( file ) {
$( '#upload_preview' ).find('.progress').remove();
});
// 文件上传成功,给item添加成功class, 用样式标记上传成功。
uploader.on( 'uploadSuccess', function( file , response) {
$( '#upload_preview' ).addClass('upload-state-done');
if(eval('response').status == 0){
$.alertMessager(response.info);
} else {
$( '#upload-avatar-src' ).attr('value', response.id); // 上传成功后会得到图片ID把这个ID设置到表单里,下一步提交。
$( '#upload_preview img').attr('src', response.url); // 预览图片
}
});
});
</script>
</block>
```
- 简介
- 环境要求
- 安装系统
- 目录结构
- 常见问题
- 基础知识
- 编辑器
- 前端规范
- 前端框架文档
- Builder教程
- Builder的来历
- ListBuilder使用
- setMetaTitle
- addTopButton
- setSearch
- addSearchItem
- setTabNav
- addTableColumn
- setTableDataList
- setTableDataListKey
- setTableDataPage
- addRightButton
- alterTableData
- setExtraHtml
- setTemplate
- FormBuilder使用
- setMetaTitle
- setTabNav
- setExtraItems
- setPostUrl
- addFormItem
- setFormData
- setExtraHtml
- setAjaxSubmit
- setTemplate
- 扩展FormBuilder
- 模块开发
- 创建模块
- 描述文件
- 模型( M )
- 模版( V )
- 控制器( C )
- API接口
- 核心模块
- 文件上传
- 微信小程序模块
- 注册登陆接口
- 钱包模块
- 统一支付
- Cms模块
- 幻灯片接口
- 文档列表接口
- 文档详情接口
- 发表评论接口
- 评论列表接口
- 收藏的文档接口
- 收藏接口
- 分类列表接口
- IM模块
- 发送消息接口
- 最近聊天列表接口
- 查询新消息接口
- 插件相关
- 短信插件
- 支付插件
- 支付宝支付
- 微信支付
- 站群模块
- 模板开发
- 准备工作
- 目录结构
- 数据调用
- 专题
- 插件开发
- 图片显示
- 获取用户信息
- 判断用户登陆
- 表单提交AjaX
- 文件上传
- 2.0兼容写法
- 模板标签
- 核心模块
- Cms模块
- 栏目分类调用
- Cordova
- 配置跨域支持
- 本地开发调试教程
- 打包成apk和ipa
- 自定义APP信息
- 常见问题
- 申请Apple开发者账户
- 多主题开发
- 新建主题
- 目录结构
- 模板变量
- 定制安装部署