【发布时间】:2018-07-06 13:39:17
【问题描述】:
我正在实现一个简单的图像上传表单。使用手机时,用户可以选择用相机拍照并上传。
由于某种原因,以这种方式拍摄的照片没有保存到图库中。
HTML 声明中是否缺少任何内容以使图片无论是否被丢弃或使用都可以保存到图库?
这是我的表单(在 Angular 中):
<ng-container *ngFor="let image of imageList; let i = index;">
<div class="mb-1" fxLayoutAlign.gt-xs="space-between" fxLayoutGap.xs="10px" fxLayout.xs="column">
<input type="file" accept="image/*" [disabled]="image.hasOwnProperty('Id') && image?.Id" (change)="showPreview($event, img, i)" #input/>
<img [src]="image?.url" alt="" #img class="image-limited" />
<p *ngIf="image?.url !== ''" fxLayoutAlign.xs="center center">{{ image?.hasOwnProperty('name') ? image?.name : (form.get('AssetNumber').value || '') + '_' + (i + 1) }}</p>
<button md-raised-button color="accent" class="delete-button" (click)="clearImage(input, img, $event, i)" [disabled]="image?.url === ''">
<i class="fa fa-remove"></i> {{ 'ADD_EDIT_ASSET_IMAGE_DELETE_BUTTON_TEXT' | translate }}
</button>
</div>
<hr class="mb-1" *ngIf="i !== imageList.length - 1" />
</ng-container>
这个方法在输入改变时被调用:
showPreview(event: { target: { files: FileList, value: string } }, element: HTMLImageElement, imageIndex: number): void {
ImageCompression.compress(event.target.files[0], this.configurationService.previewQuality)
.then((res: File) => {
const imageUrl: string = URL.createObjectURL(res);
this.imageList[imageIndex].url = this.sanitizer.bypassSecurityTrustUrl(imageUrl);
this.renderer.setAttribute(element, 'src', imageUrl);
});
}
【问题讨论】:
-
尝试用短信做同样的事情。您将得到相同的结果 - 图像不会保存到图库,只会保存到短信中。与备忘录或笔记应用程序相同。您是否有任何理由相信您在浏览器中运行的应用程序的行为会与手机其余时间的行为方式不同? (我当然不会!)
-
能提供给我们HTML相关的component.ts吗?
-
@KLTR 添加了代码。
标签: javascript angular html android-camera media