# 上传
允许用户通过文件表单或占位符域来上传文件
## 用法
这个Javascript组件运用了最新的 XMLHttpRequest Level 2 规范,提供了通过包含上传进度条的Ajax进行文件上传追踪的功能。本组件提供了两种上传文件的方式: `select` 和 `drop`。 `select` 请求只能被用在`<input type="file">` 元素中,而 `drop`基本可以用在任何元素,通过从桌面将文件拖拽到指定元素就能轻松实现上传。记住,本组件并不在服务器上处理文件上传。
注意 使用此组件需要额外添加 `upload.css` 文件,在`css/components`文件夹中。此组件需要额外添加 `upload.js` 文件,在`js/components`文件夹中。
上传组件需要根据你的要求单独进行实施。在我们的例子中,我们使用[占位符](placeholder.html)和[文件表单](form-file.html),同时使用了`drop` 和 `select`请求。另外,还是用了[进度条](progress.html)来显示上传进度。
### Example
![](https://box.kancloud.cn/2016-05-12_57346f429fd22.jpg)
### Markup
```
<div id="upload-drop" class="uk-placeholder">
Info text... <a class="uk-form-file">Select a file<input id="upload-select" type="file"></a>.
</div>
<div id="progressbar" class="uk-progress uk-hidden">
<div class="uk-progress-bar" style="width: 0%;">...</div>
</div>
```
* * *
### JavaScript
为了创建 `select` 和 `drop` 上传监听器,你需要使用目标元素和选项来实例化每个上传class,以定义回调和其他有用的设置。
```
<script>
$(function(){
var progressbar = $("#progressbar"),
bar = progressbar.find('.uk-progress-bar'),
settings = {
action: '/', // 上传路径 url
allow : '*.(jpg|jpeg|gif|png)', // 只允许上传图片
loadstart: function() {
bar.css("width", "0%").text("0%");
progressbar.removeClass("uk-hidden");
},
progress: function(percent) {
percent = Math.ceil(percent);
bar.css("width", percent+"%").text(percent+"%");
},
allcomplete: function(response) {
bar.css("width", "100%").text("100%");
setTimeout(function(){
progressbar.addClass("uk-hidden");
}, 250);
alert("Upload Completed")
}
};
var select = UIkit.uploadSelect($("#upload-select"), settings),
drop = UIkit.uploadDrop($("#upload-drop"), settings);
});
</script>
```
* * *
## JavaScript 选项
| 选项 | 可用值 | 默认值 | 描述 |
| --- | --- | --- | --- |
| `action` | string | '' | 上传的目标URL |
| `single` | boolean | true | 逐一进行文件发送 |
| `param` | string | files[] | 传递查询名称 |
| `params` | JSON Object | {} | 额外的请求参数 |
| `allow` | string | *.* | 文件过滤器 |
| `filelimit` | integer | false | 文件上传数量限制 |
| `type` | (text | json) | text | 来自服务器的响应类型 |
### 回调事件
| 名称 | 参数 |
| --- | --- |
| `before` | settings, files |
| `beforeAll` | files |
| `beforeSend` | xhr |
| `progress` | percent |
| `complete` | response, xhr |
| `allcomplete` | response, xhr |
| `notallowed` | file, settings |
| `loadstart` | event |
| `load` | event |
| `loadend` | event |
| `error` | event |
| `abort` | event |
| `readystatechange` | event |
- UIkit 中文文档
- 开始使用
- 初学者
- 开始使用
- 如何自定义
- 布局示例
- 开发者
- 项目结构
- Less & Sass 文件
- 创建主题
- 创建样式
- Customizer.json
- JavaScript
- 自定义前缀
- 核心组件
- 默认
- 基础
- 打印
- 布局类组件
- 网格
- 面板/Panel
- 块/Block
- 文章
- 评论/Comment
- 效果/Utility
- Flex 布局
- 覆盖/Cover
- 导航类组件
- 导航菜单
- 导航栏
- 二级导航
- 面包屑/Breadcrumb
- 分页
- 选项卡
- 缩略图导航/Thumbnav
- 页面元素
- 列表
- 描述列表
- 表格
- 表单
- 常用组件
- 按钮
- 图标
- 关闭/Close
- 徽章/Badge
- 提示框
- 缩略图/Thumbnail
- 遮罩/Overlay
- 文本
- 列
- 动画
- 对比度/Contrast
- JAVASCRIPT组件
- 下拉菜单
- 模态对话框
- 抽屉/Off-canvas
- 切换器/Switcher
- 拨动/toggle
- 滚动监听/Scrollspy
- 平滑滚动
- 附加组件
- 布局类组件
- 动态网格
- 视差网格
- 导航类组件
- 圆点导航
- 滑动导航/Slidenav
- 动态分页
- 常用组件
- 高级表单
- 文件表单/Form file
- 密码表单
- 选择表单
- 占位符
- 进度条/Progress
- JAVASCRIPT组件
- 灯箱/Lightbox
- 自动完成/Autocomplete
- 日期选择器/Datepicker
- HTML 编辑器
- 滚动条/Slider
- 滑块集/Slideset
- 幻灯片/Slideshow
- 视差/Parallax
- 手风琴/Accordion
- 通知/Notify
- 搜索/Search
- 可嵌套/Nestable
- 可排序/Sortable
- 附着/Sticky
- 时间选择器
- 工具提示/Tooltip
- 上传