【发布时间】:2016-11-23 09:33:34
【问题描述】:
我有输入文件(没有提交 - 典型的输入文件)。我想在选择文件时调用一些函数。
示例: 我点击“选择文件”-> 选择文件-> 现在系统检测到更改并调用一些函数来打印所有这些文件信息(例如图像名称)。
我不能在输入文件上使用 ngModel,对吧?该怎么做?
【问题讨论】:
我有输入文件(没有提交 - 典型的输入文件)。我想在选择文件时调用一些函数。
示例: 我点击“选择文件”-> 选择文件-> 现在系统检测到更改并调用一些函数来打印所有这些文件信息(例如图像名称)。
我不能在输入文件上使用 ngModel,对吧?该怎么做?
【问题讨论】:
这是我对 Double H 的答案的修正,即不依赖 jQuery 并阻止 webpack 在 e.target.result 上出错。
<img [src]="imageSrc" alt="" />
<input type="file" capture="camera" accept="image/*" (change)="displayPhoto($event)">
打字稿代码
displayPhoto(fileInput) {
if (fileInput.target.files && fileInput.target.files[0]) {
const reader = new FileReader();
reader.onload = ((e) => {
this.imageSrc = e.target['result'];
});
reader.readAsDataURL(fileInput.target.files[0]);
}
}
【讨论】:
在我添加 onclick="this.value = null" 之前,Double H 的功能对我不起作用:https://stackoverflow.com/a/42357862/634650
【讨论】:
在您的模板中使用以下内容:
<div class="modal-body">
<input type="file" (change)="fileChangeEvent($event)" placeholder="Upload file..." />
<img id="preview" src="" alt="Preview">
</div>
然后你的组件fileChangeEvent() as
public fileChangeEvent(fileInput: any){
if (fileInput.target.files && fileInput.target.files[0]) {
var reader = new FileReader();
reader.onload = function (e : any) {
$('#preview').attr('src', e.target.result);
}
reader.readAsDataURL(fileInput.target.files[0]);
}
}
您的所有文件相关信息都会控制台......
【讨论】: