VUE+ElementUIブラウザが解析テキストファイルをローカルにインポート(サーバにアップロードしない)


VUE+ElementUIブラウザは、解析テキストファイルの内容をローカルにインポートします(サーバにアップロードしません).
サンプルコード:


	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関数で再上書きされる.