--- title: 上传组件 upload toc: true --- # 上传组件 > 上传组件 `upload` 是用于处理文件上传的前端交互逻辑,可以更好地协助后端实现文件从本地到服务端上传的对接。

示例

以下示例均没有设置上传接口,因此每次上传都会报异常提示,这属于正常现象。实际使用时设置成您的真实上传接口即可。
{{- d.include("/upload/detail/demo.md") }}

API

| API | 描述 | | --- | --- | | var upload = layui.upload | 获得 `upload` 模块。 | | [var inst = upload.render(options)](#render) | upload 组件渲染,核心方法。 | | [inst.upload()](#upload) | 对当前实例提交上传 | | [inst.reload(options)](#reload) | 对当前实例进行重载 | | inst.config | 获得当前实例的属性配置项 |

渲染

`upload.render(options);` - 参数 `options` : 基础属性配置项。[#详见属性](#options)
注 : 除 `elem` 属性外,其他基础属性也可以直接写在元素的 `lay-options="{}"` 属性中。 ``` ``` 该方法返回一个实例对象,包含操作当前实例的相关方法成员。 ``` var inst = upload.render(options); console.log(inst); // 得到当前实例对象 ```

提交上传

`inst.upload();` - 无需传递参数 文件在进行选择后,会自动提交上传。而若文件*上传失败*,则可以使用该方法来重新上传, ``` // 渲染 var inst = upload.render({ elem: '#id', error: function(){ // 上传失败的回调 // 当上传失败时,可在此处生成「重新上传」按钮,并执行该方法重新触发上传提交 /* $('#btn').on('click', function(){ inst.upload(); }) */ } // … }); ```

重载

`inst.reload(options);` - 参数 `options` : 基础属性配置项。[#详见属性](#options) 该方法用于对当前的上传实例进行完整重载,所有属性均可参与到重载中。 ``` // 渲染 var inst = upload.render({ elem: '#id', // … }); // 重载 inst.reload({ field: 'AAA', // … }) ```

属性

{{- d.include("/upload/detail/options.md") }}

跨域方案

`upload` 组件支持跨域上传,一般有以下两种场景 - 自建上传服务。在服务端配置 `CORS` 开启跨资源共享。 即对接口所在的服务器设置 `Access-Control-Allow-Origin ` 相关 `header` 信息。 - 第三方上传服务。如:阿里云、腾讯云等,只需按照不同平台对应的上传 SDK 进行操作即可。