Files
love-nav-vue/src/components/setting/onsite/Import.vue
2023-12-25 01:49:59 +08:00

111 lines
2.9 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<el-upload
class="upload-demo"
drag
action=""
:on-change="handleChange"
:auto-upload="false"
:limit="1"
multiple>
<i class="el-icon-upload"></i>
<div class="el-upload__text">将文件拖到此处<em>点击上传</em></div>
<div class="el-upload__tip" slot="tip">只能上传html文件</div>
</el-upload>
</template>
<script>
import {parseByString } from "bookmark-file-parser"
import axios from "axios";
import Vue from "vue";
export default {
name: "Import",
data() {
return {}
},
mounted() {
},
created() {
},
computed: {},
methods: {
handleChange(file) {
let _this=this;
let reader = new FileReader(); //先new 一个读文件的对象 FileReader
if (typeof FileReader === "undefined") { //用来判断你的浏览器是否支持 FileReader
this.$message({
type: "info",
message: "您的浏览器不支持文件读取。"
});
return;
}
// reader.readAsText(file.raw, "gb2312"); //读.txt文件
reader.readAsArrayBuffer(file.raw); //读任意文件
reader.onload = function (e) {
var ints = new Uint8Array(e.target.result); //要使用读取的内容所以将读取内容转化成Uint8Array
// ints = ints.slice(0, 5000); //截取一段读取的内容
// let snippets = new TextDecoder('gb2312').decode(ints); //二进制缓存区内容转化成中文(即也就是读取到的内容)
let snippets = new TextDecoder('utf-8').decode(ints); //二进制缓存区内容转化成中文(即也就是读取到的内容)
// console.log("读取的内容如下:");
if(snippets){
_this.disposeJson(parseByString(snippets));
}
};
},
disposeJson(json) {
let _this = this;
if (localStorage.getItem('userId')) {
axios({
method: 'post',
url: '/api/UrlAndCate/disposeJson',
params: {
userId:localStorage.getItem('userId'),
},
data:json
}).then(function (res) {
if(res.data.code!==200){
Vue.prototype.$notify.error({
title: '错误',
message: "插入失败!",
offset: 0
});
}else {
Vue.prototype.$notify({
title: '成功',
message: ('i', {style: 'color: teal'}, "插入成功!"),
type: 'success',
offset: 0
});
}
}).catch((error) => {
Vue.prototype.$notify.error({
title: '错误',
message: error,
offset: 0
});
})
} else {
Vue.prototype.$notify.error({
title: '错误',
message: '登录状态失效,请重新登录!',
offset: 0
});
}
},
}
}
</script>
<style scoped>
.el-upload__tip {
color: var(--theme-color);
}
</style>