如何将文件限制为仅在 Angular 文件上传时使用 UTF-8 编码?
How to restrict files to UTF-8 encoded only in Angular file upload?
我正在使用 ng-file-upload 上传文本文件。
<span type="file" class="btn" ngf-select ng-model="fileUser" name="fileUser" ngf-pattern="'.txt,.TXT'" ngf-accept="'text/plain'"> Select File </span>
有没有办法只接受 UTF-8 编码的文本文件并拒绝任何其他类型的编码?
ng-file-upload
本身不支持它,但您可以自己创建它。以这种方式连接到 ngf-change
:
ngf-change="checkEncoding($files, $file, $newFiles, $duplicateFiles, $invalidFiles, $event)"
在您的应用中加入 encoding.js
。当用户 select 一个 .txt
文件时,通过 FileReader
加载文件内容并使用 encoding.js
测试编码:
$scope.checkEncoding = function(files, file, newFiles, duplicateFiles, invalidFiles, event) {
if (!event.target.files) return
var testFile = event.target.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var content = new Uint8Array(e.target.result);
var encoding = Encoding.detect(content);
if (encoding != 'UTF8') {
//alert to the user, reset the file ng-model whatever ...
}
}
reader.readAsArrayBuffer(testFile)
}
这是一个工作 plunkr -> http://plnkr.co/edit/1UM9NDpNgRbJ13R67xuf?p=preview
我正在使用 ng-file-upload 上传文本文件。
<span type="file" class="btn" ngf-select ng-model="fileUser" name="fileUser" ngf-pattern="'.txt,.TXT'" ngf-accept="'text/plain'"> Select File </span>
有没有办法只接受 UTF-8 编码的文本文件并拒绝任何其他类型的编码?
ng-file-upload
本身不支持它,但您可以自己创建它。以这种方式连接到 ngf-change
:
ngf-change="checkEncoding($files, $file, $newFiles, $duplicateFiles, $invalidFiles, $event)"
在您的应用中加入 encoding.js
。当用户 select 一个 .txt
文件时,通过 FileReader
加载文件内容并使用 encoding.js
测试编码:
$scope.checkEncoding = function(files, file, newFiles, duplicateFiles, invalidFiles, event) {
if (!event.target.files) return
var testFile = event.target.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var content = new Uint8Array(e.target.result);
var encoding = Encoding.detect(content);
if (encoding != 'UTF8') {
//alert to the user, reset the file ng-model whatever ...
}
}
reader.readAsArrayBuffer(testFile)
}
这是一个工作 plunkr -> http://plnkr.co/edit/1UM9NDpNgRbJ13R67xuf?p=preview