VUE+ElementUIブラウザが解析テキストファイルをローカルにインポート(サーバにアップロードしない)
2334 ワード
VUE+ElementUIブラウザは、解析テキストファイルの内容をローカルにインポートします(サーバにアップロードしません).
サンプルコード:
注意:readAsBinaryString関数のthisを書き換えます.onload共通処理方法はmethodsのread関数で再上書きされる.
サンプルコード:
export default {
name: 'importTxt',
data() {
return {
files: null //
};
},
methods: {
/**
* input-file , "$event"
* @param e {@link Object}:$event ;
*/
inFile(e) {
this.files = (e.target || e.srcElement).files; // "input-file" FileList
if (!this.files || !this.files.length)
return;
for (let i = 0, len = this.files.length; i < len; i++)
this.read(this.files[i]);
},
/**
* , 、 。
* @param f {@link Object}: ;
* @param fs {@link Array}: ;
*/
elInFile(f, fs) {
this.read(f.raw);
},
/**
*
* @param f {@link File}
*/
read(f) {
let rd = new FileReader();
rd.onload = e => { //this.readAsArrayBuffer , this.onload 。
let cont = rd.reading({encode: 'GBK'});
console.log(' :', cont);
};
rd.readAsBinaryString(f);
}
},
beforeCreate() {
/**
* ( )
* @param pms {@link Object}: :
* @param pms.encode {@link String}: :
* @return {@link String}: ;
*/
FileReader.prototype.reading = function ({encode} = pms) {
let bytes = new Uint8Array(this.result); //
let text = new TextDecoder(encode || 'UTF-8').decode(bytes);
return text;
};
/* readAsBinaryString */
FileReader.prototype.readAsBinaryString = function (f) {
if (!this.onload) // this onload ,
this.onload = e => { // this.onload ,
let rs = this.reading();
console.log(rs);
};
this.readAsArrayBuffer(f); // this.onload
};
}
}
注意:readAsBinaryString関数のthisを書き換えます.onload共通処理方法はmethodsのread関数で再上書きされる.