通过点击或者拖拽上传文件
通过 tip属性 你可以传入自定义的上传按钮类型和文字提示。
render() {
const fileList = [
{name: "food.jpeg", url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg"}, {name: "food2.jpeg", url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg"}
];
return (
<Upload
className="upload-demo"
action="//jsonplaceholder.typicode.com/posts/"
onPreview={file => this.handlePreview(file)}
onRemove={(file, fileList) => this.handleRemove(file, fileList)}
fileList={fileList}
limit={3}
onExceed={(files, fileList) => {
Message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
}}
tip={<div className="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>}
>
<Button size="small" type="primary">点击上传</Button>
</Upload>
)
}
handlePreview(file) {
console.log("preview");
}
handleRemove(file, fileList) {
console.log("remove");
}
使用 beforeUpload
限制用户上传的图片格式和大小。
constructor(props) {
super(props);
this.state = {
imageUrl: "",
};
}
render() {
const { imageUrl } = this.state;
return (
<Upload
className="avatar-uploader"
action="//jsonplaceholder.typicode.com/posts/"
showFileList={false}
onSuccess={(res, file) => this.handleAvatarScucess(res, file)}
beforeUpload={file => this.beforeAvatarUpload(file)}
>
{ imageUrl ? <img src={imageUrl} className="avatar" /> : <i className="el-icon-plus avatar-uploader-icon"></i> }
</Upload>
)
}
handleAvatarScucess(res, file) {
this.setState({ imageUrl: URL.createObjectURL(file.raw) });
}
beforeAvatarUpload(file) {
const isJPG = file.type === "image/jpeg";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG) {
Message("上传头像图片只能是 JPG 格式!");
}
if (!isLt2M) {
Message("上传头像图片大小不能超过 2MB!");
}
return isJPG && isLt2M;
}
使用 listType
属性来设置文件列表的样式。
constructor(props) {
super(props);
this.state = {
dialogImageUrl: "",
dialogVisible: false,
};
}
render() {
const { dialogImageUrl, dialogVisible } = this.state;
return (
<div>
<Upload
action="//jsonplaceholder.typicode.com/posts/"
listType="picture-card"
onPreview={file => this.handlePictureCardPreview(file)}
onRemove={(file, fileList) => this.handleRemove(file, fileList)}
>
<i className="el-icon-plus"></i>
</Upload>
<Dialog
visible={dialogVisible}
size="tiny"
onCancel={() => this.setState({ dialogVisible: false })}
>
<img width="100%" src={dialogImageUrl} alt="" />
</Dialog>
</div>
)
}
handleRemove(file, fileList) {
console.log(file, fileList);
}
handlePictureCardPreview(file) {
this.setState({
dialogImageUrl: file.url,
dialogVisible: true,
})
}
render() {
const fileList2 = [
{name: "food.jpeg", url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg"}, {name: "food2.jpeg", url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg"}
]
return (
<Upload
className="upload-demo"
action="//jsonplaceholder.typicode.com/posts/"
onPreview={file => this.handlePreview(file)}
onRemove={(file, fileList) => this.handleRemove(file, fileList)}
fileList={fileList2}
listType="picture"
tip={<div className="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>}
>
<Button size="small" type="primary">点击上传</Button>
</Upload>
)
}
handleRemove(file, fileList) {
console.log(file, fileList);
}
handlePreview(file) {
console.log(file);
}
通过 onChange
钩子函数来对列表进行控制
constructor(props) {
super(props);
this.state = {
fileList: [{
name: "food.jpeg",
url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg",
status: "finished"
}, {
name: "food2.jpeg",
url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg",
status: "finished"
}]
};
}
render() {
const { fileList } = this.state;
return (
<Upload
className="upload-demo"
action="//jsonplaceholder.typicode.com/posts/"
onChange={(file, fileList) => this.handleChange(file, fileList)}
fileList={fileList}
tip={<div className="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>}
>
<Button size="small" type="primary">点击上传</Button>
</Upload>
)
}
handleChange(file, fileList) {
this.setState({ fileList: fileList.slice(-3) });
}
可将文件拖入指定区域进行上传。
通过 drag
属性可以将上传控件变为支持拖拽的形式,并且你可以通过 multiple
属性来控制是否支持多选,onPreview
和 onRemove
是一个钩子函数,分别在点击上传后的文件链接和点击移除上传后的文件后被调用。
render() {
return (
<Upload
className="upload-demo"
drag
action="//jsonplaceholder.typicode.com/posts/"
multiple
tip={<div className="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>}
>
<i className="el-icon-upload"></i>
<div className="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
</Upload>
)
}
render() {
const fileList = [
{name: "food.jpeg", url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg"}, {name: "food2.jpeg", url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg"}
];
return (
<Upload
className="upload-demo"
ref="upload"
action="//jsonplaceholder.typicode.com/posts/"
onPreview={file => this.handlePreview(file)}
onRemove={(file, fileList) => this.handleRemove(file, fileList)}
fileList={fileList}
autoUpload={false}
tip={<div className="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>}
trigger={<Button size="small" type="primary">选取文件</Button>}
>
<Button style={{ marginLeft: "10px"}} size="small" type="success" onClick={() => this.submitUpload()}>上传到服务器</Button>
</Upload>
)
}
handleRemove(file, fileList) {
console.log(file, fileList);
}
handlePreview(file) {
console.log(file);
}
submitUpload() {
this.refs.upload.submit();
}
参数 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
action | 必选参数, 上传的地址 | string | — | — |
headers | 可选参数, 设置上传的请求头部 | object | — | — |
multiple | 可选参数, 是否支持多选文件 | boolean | — | — |
data | 可选参数, 上传时附带的额外参数 | object | — | — |
name | 可选参数, 上传的文件字段名 | string | — | file |
withCredentials | 支持发送 cookie 凭证信息 | boolean | — | false |
showFileList | 是否显示已上传文件列表 | boolean | — | true |
drag | 可选参数,是否支持拖拽 | boolean | - | - |
accept | 可选参数, 接受上传的文件类型(thumbnailMode 模式下此参数无效) | string | — | — |
onPreview | 可选参数, 点击已上传的文件链接时的钩子, 可以通过 file.response 拿到服务端返回数据 | function(file) | — | — |
onRemove | 可选参数, 文件列表移除文件时的钩子 | function(file, fileList) | — | — |
onSuccess | 可选参数, 文件上传成功时的钩子 | function(response, file, fileList) | — | — |
onError | 可选参数, 文件上传失败时的钩子 | function(err, file, fileList) | — | — |
onProgress | 可选参数, 文件上传时的钩子 | function(event, file, fileList) | — | — |
onChange | 可选参数, 文件状态改变时的钩子,上传成功或者失败时都会被调用 | function(file, fileList) | — | — |
beforeUpload | 可选参数, 上传文件之前的钩子,参数为上传的文件,若返回 false 或者 Promise 则停止上传。 | function(file) | — | — |
listType | 文件列表的类型 | string | none/text/picture/picture-card | text |
autoUpload | 是否在选取文件后立即进行上传 | boolean | — | true |
fileList | 上传的文件列表, 例如: [{name: "food.jpeg", url: "https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg"_blank}] | array | — | [] |
disabled | 是否禁用 | boolean | — | false |
limit | 最大允许上传个数 | number | — | — |
onExceed | 文件超出个数限制时的钩子 | function(files, fileList) | — | — |
httpRequest | 覆盖默认的上传行为,可以自定义上传的实现 | function | — | — |
方法名 | 说明 | 参数 |
---|---|---|
clearFiles | 清空已上传的文件列表 | — |
Upload 上传通过点击或者拖拽上传文件点击上传只能上传 jpg/png 文件,且不超过 500kbfood.jpegfood2.jpeg通过 slot 你可以传入...
我们使用 series[i]-sankey.links[i] 来表示桑基图节点间的关系数据。示例如下:links: [{source: 'n1',target: 'n2...
singleAxis.axisLabel |ObjectECharts 单轴刻度标签的相关设置。singleAxis.axisLabel.show |boolean[ default: true ]是否显示...
singleAxis.axisPointer.shadowStyle |Object用于设置 ECharts 单轴指示器的阴影。axisPointer.type 为 'shadow' 时有效...
模板语法在Angular中,模板就是一块HTML。你可以在模板中通过一种特殊的语法来使用Angular的诸多特性。先决条件在学习模板语法之...
模板类型检查概述正如TypeScript在代码中捕获类型错误一样,Angular也会检查应用程序模板中的表达式和绑定,并可以报告所发现的...
完结篇我们的应用程序现在完成了。请随意练习这些代码,用git checkout命令跳回到前面的步骤。要想获得我们在本教程中涉及的更多...
AngularJS ng-class 指令 AngularJS 参考手册AngularJS 实例修改 div 元素的类:select ng-model="home" optionvalue="sky"Sky/op...
AngularJS ng-cut 指令 AngularJS 参考手册AngularJS 实例输入框的文本被剪切时执行表达式:input ng-cut="count = count + 1" n...