vue头像上传裁剪组件_一个漂亮的Vue组件,用于图像裁剪和上传
vue头像上传裁剪组件 vue-image-crop-upload (vue-image-crop-upload)A beautiful vue component for image crop and upload.一个漂亮的vue组件,用于图像裁剪和上传。Notice: This component is designed for pc, not recommended for us...
·
vue头像上传裁剪组件
vue-image-crop-upload (vue-image-crop-upload)
A beautiful vue component for image crop and upload.
一个漂亮的vue组件,用于图像裁剪和上传。
Notice: This component is designed for pc, not recommended for use on the mobile side.
注意:此组件是为PC设计的,不建议在移动设备上使用。
浏览器兼容性 (Brower compatibility)
IE10+
IE10 +
环保 (Env)
[email protected]/[email protected] + webpack + es6
[受电子邮件保护] / [受电子邮件保护] + webpack + es6
安装 (Install)
npm (npm)
$ npm install vue-image-crop-upload
用法 (Usage)
道具 (Props)
Name | Type | Default | Description |
---|---|---|---|
url | String | '' | Server api path,like "/avatar/upload", If empty, will not be uploaded |
method | String | 'POST' | request http method |
field | String | 'upload' | Upload input filename, used for server side get the file stream. |
value | Boolean | twoWay | show or not |
params | Object | null | POST Params,like "{k:v}" |
headers | Object | null | POST request header,like "{k:v}" |
langType | String | 'zh' | language type |
langExt | Object | language extend | |
width | Number | 200 | width of receive image |
height | Number | 200 | height of receive image |
imgFormat | string | 'png' | jpg/png, Server api receive file type. |
imgBgc | string | '#fff' | background color, if the imgFormat prop is jpg |
noCircle | Boolean | false | disable circle preview |
noSquare | Boolean | false | disable square preview |
noRotate | Boolean | true | disable rotate function |
withCredentials | Boolean | false | support cross-domain |
名称 | 类型 | 默认 | 描述 |
---|---|---|---|
网址 | 串 | '' | 服务器api路径,例如“ / avatar / upload”,如果为空,则不会上传 |
方法 | 串 | 'POST' | 请求http方法 |
领域 | 串 | “上传” | 上传输入文件名,用于服务器端获取文件流。 |
值 | 布尔型 | 双向 | 显示或不显示 |
参数 | 目的 | 空值 | POST参数,例如“ {k:v}” |
标头 | 目的 | 空值 | POST请求标头,例如“ {k:v}” |
langType | 串 | zh | 语言类型 |
langExt | 目的 | 语言扩展 | |
宽度 | 数 | 200 | 接收图像的宽度 |
高度 | 数 | 200 | 接收图像的高度 |
img格式 | 串 | 'png' | jpg / png,服务器api接收文件类型。 |
imgBgc | 串 | '#fff' | 背景颜色(如果imgFormat道具是jpg) |
无圆 | 布尔型 | 假 | 禁用圈子预览 |
面积不大 | 布尔型 | 假 | 禁用方形预览 |
不旋转 | 布尔型 | 真正 | 禁用旋转功能 |
withCredentials | 布尔型 | 假 | 支持跨域 |
大事记 (Events)
Name | Description |
---|---|
srcFileSet | Once you've selected the file, params( fileName, fileType, fileSize ) |
cropSuccess | image crop success, params( imageDataUrl, field ) |
cropUploadSuccess | upload success, params( jsonData, field ) |
cropUploadFail | upload fail, params( status, field ) |
名称 | 描述 |
---|---|
srcFileSet | 选择文件后,params(fileName,fileType,fileSize) |
作物成功 | 图像裁剪成功,参数(imageDataUrl,字段) |
cropUploadSuccess | 上传成功,参数(jsonData,field) |
cropUploadFail | 上传失败,参数(状态,字段) |
语言包 (Language package)
Support language | Shorthand | Contributors |
---|---|---|
中文(default) | zh | dai-siki |
繁体中文 | zh-tw | s950329 |
English | en | dai-siki / doriandrn |
Russian | ru | bigperson |
Romanian | ro | doriandrn |
Portuguese (Brazil) | pt-br | abensur |
French | fr | valerymelou |
Dutch | nl | blyleven |
Turkish | tr | smhayhan |
spanish MX | es-MX | vickvasquez |
German | de | attx |
Japanese | ja | KangYoosam |
Italian | it | phaberest |
Arabic | ar | barakat-turki |
ukrainian | ua | dvomaks |
Uyghur | ug | oyghan |
Thai | th | godxavia |
Myanmar | mm | tintnaingwinn |
Swedish | se | hekin1 |
支持语言 | 速记 | 贡献者 |
---|---|---|
中文(默认) | zh | 大树 |
繁体中文 | zh-tw | s950329 |
英语 | 恩 | 大斯基/多里安德恩 |
俄语 | RU | 大人物 |
罗马尼亚语 | RO | 多里安 |
葡萄牙语(巴西) | pt-br | 阿本苏尔 |
法文 | fr | 瓦莱里米卢 |
荷兰语 | nl | bleveneven |
土耳其 | tr | hay |
西班牙MX | es-MX | 维克瓦克斯 |
德语 | 德 | attx |
日本 | ja | 姜佑三 |
义大利文 | 它 | 最强 |
阿拉伯 | AR | 巴拉卡特-图尔基 |
乌克兰 | ua | 德沃马克 |
维吾尔族 | ug | Oyghan |
泰国 | 日 | Godxavia |
缅甸 | 毫米 | 丁宁温 |
瑞典 | SE | hekin1 |
// example
{
en: {
hint: 'Click or drag the file here to upload',
loading: 'Uploading…',
noSupported: 'Browser is not supported, please use IE10+ or other browsers',
success: 'Upload success',
fail: 'Upload failed',
preview: 'Preview',
btn: {
off: 'Cancel',
close: 'Close',
back: 'Back',
save: 'Save'
},
error: {
onlyImg: 'Image only',
outOfSize: 'Image exceeds size limit: ',
lowestPx: 'Image\'s size is too low. Expected at least: '
}
}
}
示例[受电子邮件保护] (Example [email protected])
<div id="app">
<a class="btn" @click="toggleShow">set avatar</a>
<my-upload field="img"
@crop-success="cropSuccess"
@crop-upload-success="cropUploadSuccess"
@crop-upload-fail="cropUploadFail"
v-model="show"
:width="300"
:height="300"
url="/upload"
:params="params"
:headers="headers"
img-format="png"></my-upload>
<img :src="imgDataUrl">
</div>
<script>
import 'babel-polyfill'; // es6 shim
import Vue from 'vue';
import myUpload from 'vue-image-crop-upload';
new Vue({
el: '#app',
data: {
show: true,
params: {
token: '123456798',
name: 'avatar'
},
headers: {
smail: '*_~'
},
imgDataUrl: '' // the datebase64 url of created image
},
components: {
'my-upload': myUpload
},
methods: {
toggleShow() {
this.show = !this.show;
},
/**
* crop success
*
* [param] imgDataUrl
* [param] field
*/
cropSuccess(imgDataUrl, field){
console.log('-------- crop success --------');
this.imgDataUrl = imgDataUrl;
},
/**
* upload success
*
* [param] jsonData server api return data, already json encode
* [param] field
*/
cropUploadSuccess(jsonData, field){
console.log('-------- upload success --------');
console.log(jsonData);
console.log('field: ' + field);
},
/**
* upload fail
*
* [param] status server api return error status, like 500
* [param] field
*/
cropUploadFail(status, field){
console.log('-------- upload fail --------');
console.log(status);
console.log('field: ' + field);
}
}
});
</script>
示例[受电子邮件保护] (Example [email protected])
<div id="app">
<a class="btn" @click="toggleShow">set avatar</a>
<my-upload field="img"
:width="300"
:height="300"
url="/upload"
:params="params"
:headers="headers"
lang-type="en"
:value.sync="show"
img-format="png"></my-upload>
<img :src="imgDataUrl">
</div>
<script>
import 'babel-polyfill'; // es6 shim
import Vue from 'vue';
import myUpload from 'vue-image-crop-upload/upload-1.vue';
new Vue({
el: '#app',
data: {
show: true,
params: {
token: '123456798',
name: 'avatar'
},
headers: {
smail: '*_~'
},
imgDataUrl: '' // the datebase64 url of created image
},
components: {
'my-upload': myUpload
},
methods: {
toggleShow() {
this.show = !this.show;
}
},
events: {
/**
* crop success
*
* [param] imgDataUrl
* [param] field
*/
cropSuccess(imgDataUrl, field){
console.log('-------- crop success --------');
this.imgDataUrl = imgDataUrl;
},
/**
* upload success
*
* [param] jsonData server api return data, already json encode
* [param] field
*/
cropUploadSuccess(jsonData, field){
console.log('-------- upload success --------');
console.log(jsonData);
console.log('field: ' + field);
},
/**
* upload fail
*
* [param] status server api return error status, like 500
* [param] field
*/
cropUploadFail(status, field){
console.log('-------- upload fail --------');
console.log(status);
console.log('field: ' + field);
}
}
});
</script>
翻译自: https://vuejsexamples.com/a-beautiful-vue-component-for-image-cropping-and-uploading/
vue头像上传裁剪组件
更多推荐
已为社区贡献37条内容
所有评论(0)