js 读取文件数据、导出文本到文件

读取文件数据:

函数:

/**
 *  从文件中获取文本
 *  @param  {Bolb|File} blob      二进制对象
 *  @param  {String}    encoding  编码类型 (默认值: 'utf-8',如 'gb2312', 'big5' 等)
 *  @return {Promise}
 */
function getTextByFile(blob, encoding = 'utf-8') {
  return new Promise((resolve, reject) => {
    const reader = new FileReader()
    reader.onerror = reject
    reader.onload = () => resolve(reader.result)
    reader.readAsText(blob, encoding)
  })
}

示例:

<input id="input" type="file" accept="text/*" onchange="onInput()" />
<textarea id="output"></textarea>
<script>
  function onInput() {
    const input = document.querySelector('#input')
    const output = document.querySelector('#output')
    getTextByFile(input.files[0], 'gb2312').then(res => output.value = res)
  }
</script>

导出文本到文件:

函数:

/**
 *  导出文本
 *  @param  {String|Bolb} data        输出内容或二进制对象
 *  @param  {String}      [fileName]  文件名称 (默认值为时间戳)
 */
function exportText(data, fileName) {
  const blob = data instanceof Blob ? data : new Blob([data])
  const link = document.createElementNS('http://www.w3.org/1999/xhtml', 'a')
  link.href = (window.URL || window.webkitURL).createObjectURL(blob)
  link.download = fileName || new Date().valueOf() + '.txt'
  link.dispatchEvent(new MouseEvent('click'))
}

示例:

var text = 'This is demo text.'
exportText(text, 'demo.txt')
<textarea id="input"></textarea>
<button id="output" onclick="onOutput()">Output</button>
<script>
  function onOutput() {
    const input = document.querySelector('#input')
    exportText(input.value, 'demo.txt')
  }
</script>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值