提交 40ffde1f 编写于 作者: B baiy 提交者: ninecents

base64 添加Url Safe 支持 #34

上级 52407cc2
{
"name": "c-tool",
"version": "1.3.0",
"version": "1.3.1",
"private": true,
"scripts": {
"serve": "vue-cli-service serve --port 8081",
......
......@@ -49,7 +49,7 @@
<template slot-scope="{ row }" slot="_value">
<div>{{ historyValue(row.value) }}}</div>
</template>
<template slot-scope="{ index,row }" slot="_op">
<template slot-scope="{ index }" slot="_op">
<Button type="primary" size="small" @click="historyView(index)">查看</Button>
<Button type="primary" style="margin-left: 5px" @click="historyLoad(index)" size="small">加载</Button>
</template>
......@@ -85,7 +85,7 @@ export default {
{
title: '数据',
slot: '_value',
ellipsis:true
ellipsis:true,
},
{
title: '操作',
......
<template>
<heightResize ignore :append="['.page-option-block']" @resize="resize">
<input-block bottom="0px" right="10px">
<autoHeightTextarea :height="height1" v-model="current.input" :placeholder="$t('base64_input')" />
<Upload slot="extra" action="#" :before-upload="handleUpload">
<Button size="small" type="primary" icon="ios-cloud-upload-outline">{{ $t('base64_upload_file') }}</Button>
</Upload>
</input-block>
<option-block class="page-option-block">
<div>
<Input v-model="current.input" :rows="7" type="textarea" placeholder="内容"></Input>
<option-block>
<FormItem>
<ButtonGroup>
<Button type="primary" @click="handle('encode')">{{ $t('base64_encode') }}</Button>
<Button type="primary" @click="handle('decode')">{{ $t('base64_decode') }}</Button>
<Button type="primary" @click="handle('encode')">编码</Button>
<Button type="primary" @click="handle('decode')">解密</Button>
</ButtonGroup>
</FormItem>
<FormItem>
<Checkbox v-model="current.isUriSafe">{{ $t('base64_url_safe') }}</Checkbox>
<Checkbox v-model="current.isUriSafe">Url Safe</Checkbox>
</FormItem>
</option-block>
<input-block right="10px">
<pasteClipboardFlie @on-paste-file="handleUpload">
<autoHeightTextarea :height="height2" :value="current.output" :placeholder="$t('base64_output')" />
</pasteClipboardFlie>
</input-block>
</heightResize>
<Input v-model="current.output" :rows="7" type="textarea" placeholder="结果"></Input>
</div>
</template>
<script>
import {Base64} from 'js-base64'
import mimeType from 'mime-types'
import moment from "moment";
import pasteClipboardFlie from "./components/pasteClipboardFlie";
import heightResize from "./components/heightResize";
import autoHeightTextarea from "./components/autoHeightTextarea";
import { Base64 } from 'js-base64'
export default {
components: {
pasteClipboardFlie,
heightResize,
autoHeightTextarea
},
created() {
this.$initToolData('input')
created () {
this.current = Object.assign(this.current, this.$getToolData('input'))
},
methods: {
handle(v) {
handle (v) {
if (this.current.input) {
if (v === "encode") {
this.current.output = Base64.encode(this.current.input, this.current.isUriSafe)
} else {
if (this.current.input.trim().indexOf('data:') === 0) {
// 文件 base64 内容
this.exportFile();
}
else{
this.current.output = Base64.decode(this.current.input)
this.$clipboardCopy(this.current.output)
}
if (v === "encode"){
this.current.output = Base64.encode(this.current.input,this.current.isUriSafe)
}
else{
this.current.output = Base64.decode(this.current.input)
}
this.current.operation = v
this.$clipboardCopy(this.current.output)
this.$saveToolData(this.current)
}
},
handleUpload(file) {
let r = new FileReader()
r.readAsDataURL(file)
r.onloadend = () => {
this.current.output = r.result
}
return false
},
exportFile() {
let arr = this.current.input.split(','), mime = arr[0].match(/:(.*?);/)[1];
let objectUrl = window.URL.createObjectURL(new Blob([Base64.toUint8Array(arr[1])], {type: mime}));
let aEle = document.createElement("a");
aEle.download = `ctool-base64-decode-${moment().unix()}` + (mimeType.extension(mime) ? `.${mimeType.extension(mime)}` : "");
aEle.href = objectUrl;
aEle.click();
aEle.remove();
window.URL.revokeObjectURL(objectUrl);
},
resize(height){
this.height1 = Math.min(160,Math.ceil(height/2))
this.height2 = height - this.height1
}
},
data() {
data () {
return {
current: {
input: '',
......@@ -90,9 +45,7 @@ export default {
operation: '',
isUriSafe: false,
},
height1:100,
height2:100
}
},
}
</script>
</script>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册