- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读到https://docs.fineuploader.com/branch/master/features/modules.html
所以我完成了这些步骤:
-通过npm installfine-uploader --save
安装fine uploader
- 添加到 .angular-cli.json
"styles": [
"../node_modules/fine-uploader/fine-uploader/fine-uploader-gallery.min.css"
],
"scripts": [
"../node_modules/fine-uploader/fine-uploader/fine-uploader.min.js"
],
- 创建优秀的 uploader 实例
/// <reference types="fine-uploader" />
import { FineUploaderBasic } from 'fine-uploader/lib/core';
import { UIOptions } from 'fine-uploader';
private fineUploader: FineUploaderBasic;
private fineUploaderOptions: UIOptions;
ngOnInit() {
this.fineUploaderOptions = {
validation: {
allowedExtensions: ['jpg', 'jpeg', 'png', 'gif'],
sizeLimit: 50 * 1024 * 1024, // 50 KB
},
element: this.elementRef.nativeElement.querySelector('[fine-uploader]')
};
this.fineUploader = new FineUploaderBasic(this.fineUploaderOptions);
this.fineUploader.setEndpoint('/api/User/UploadImage');
}
但是还没有起作用!无需登录浏览器控制台
我的组件完全:
/// <reference types="fine-uploader" />
import { Component, Inject, ElementRef } from '@angular/core';
import { MdDialog, MdDialogRef, MD_DIALOG_DATA, MdInputModule, MdSlideToggleModule } from '@angular/material';
import { UserModel } from 'app/models/user-model';
import { FormGroup, FormBuilder, Validators, ValidatorFn, AbstractControl, FormControl } from '@angular/forms';
import { FineUploaderBasic } from 'fine-uploader/lib/core';
import { UIOptions } from 'fine-uploader';
@Component({
selector: 'user-dialog',
templateUrl: 'user-dialog.component.html',
styleUrls: ['./user-dialog.component.css']
})
export class UserDialogComponent {
constructor(public dialogRef: MdDialogRef<UserDialogComponent>,
@Inject(MD_DIALOG_DATA) public data: any,
private elementRef: ElementRef,
private formBuilder: FormBuilder) {
this.createForm();
}
ngOnInit() {
this.dialogRef.updateSize('80%', '80%');
this.fineUploaderOptions = {
validation: {
allowedExtensions: ['jpg', 'jpeg', 'png', 'bpm', 'gif'],
sizeLimit: 50 * 1024 * 1024, // 50 KB
},
element: this.elementRef.nativeElement.querySelector('[fine-uploader]')
};
this.fineUploader = new FineUploaderBasic(this.fineUploaderOptions);
this.fineUploader.setEndpoint('/api/User/UploadImage');
}
private fineUploader: FineUploaderBasic;
private fineUploaderOptions: UIOptions;
private model: UserModel = new UserModel();
private userForm: FormGroup;
private passwordMatchValidator() {
if (!this.userForm) return null;
if ((this.userForm.get('Id').value > 0 || this.userForm.get('PasswordChange')) &&
this.userForm.get('Password').value !== this.userForm.get('PasswordConfirm').value)
return { NotEqual: true };
}
createForm(): void {
this.userForm = this.formBuilder.group({
Id: [0, Validators.required],
FullName: ['', [Validators.required, Validators.minLength(2), Validators.maxLength(50)]],
Username: ['', Validators.required],
Password: ['', [Validators.minLength(2)]],
PasswordConfirm: ['', [this.passwordMatchValidator.bind(this)]],
PasswordChange: false,
Email: ['', [Validators.required, Validators.email]],
IsAdmin: [false, Validators.required],
LanguageId: [1, Validators.required],
StatusId: [1, Validators.required],
ImagePath: ''
});
}
onSubmit() {
}
cancelButtonOnClick() {
this.dialogRef.close();
}
}
我的组件模板完整:
<div class="container" style="direction:rtl;">
<h4>مشخصات ...</h4>
<hr />
<form [formGroup]="userForm" (ngSubmit)="onSubmit()" novalidate>
<input type="hidden" formControlName="Id" />
<div class="row">
<div class="col-sm-6">
<md-form-field>
<input mdInput type="text" i18n-placeholder placeholder="نام نام خانوادگی" formControlName="FullName" />
</md-form-field>
</div>
<div class="col-sm-6">
<md-form-field>
<input mdInput type="text" i18n-placeholder placeholder="نام کاربری" formControlName="Username" style="direction: ltr;" />
</md-form-field>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<md-form-field>
<input mdInput type="email" i18n-placeholder placeholder="پست الکترونیک" formControlName="Email" style="direction: ltr;"
/>
</md-form-field>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<md-slide-toggle i18n formControlName="IsAdmin">کاربر مدیر است؟</md-slide-toggle>
</div>
<div class="col-sm-6" *ngIf="userForm.get('Id').value > 0">
<md-slide-toggle i18n formControlName="PasswordChange">رمز عبور تغییر داده شود</md-slide-toggle>
</div>
</div>
<div class="row" *ngIf="userForm.get('PasswordChange').value || userForm.get('Id').value <= 0">
<div class="col-sm-6">
<md-form-field>
<input mdInput type="password" i18n-placeholder placeholder="رمز عبور" formControlName="Password" required style="direction: ltr;"
/>
</md-form-field>
</div>
<div class="col-sm-6">
<md-form-field>
<input mdInput type="password" i18n-placeholder placeholder="تکرار رمز عبور" formControlName="PasswordConfirm" style="direction: ltr;"
/>
</md-form-field>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<div fine-uploader>Uploader Container</div>
</div>
</div>
<hr />
<button md-button i18n type="submit" [disabled]="!userForm.valid">ثبت</button>
<button md-button i18n type="button" (click)="cancelButtonOnClick()">انصراف</button>
</form>
</div>
<script type="text/template" id="qq-template">
<div class="qq-uploader-selector qq-uploader" qq-drop-area-text="Drop files here">
<div class="qq-total-progress-bar-container-selector qq-total-progress-bar-container">
<div role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" class="qq-total-progress-bar-selector qq-progress-bar qq-total-progress-bar"></div>
</div>
<div class="qq-upload-drop-area-selector qq-upload-drop-area" qq-hide-dropzone>
<span class="qq-upload-drop-area-text-selector"></span>
</div>
<div class="qq-upload-button-selector qq-upload-button">
<div>Upload a file</div>
</div>
<span class="qq-drop-processing-selector qq-drop-processing">
<span>Processing dropped files...</span>
<span class="qq-drop-processing-spinner-selector qq-drop-processing-spinner"></span>
</span>
<ul class="qq-upload-list-selector qq-upload-list" aria-live="polite" aria-relevant="additions removals">
<li>
<div class="qq-progress-bar-container-selector">
<div role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" class="qq-progress-bar-selector qq-progress-bar"></div>
</div>
<span class="qq-upload-spinner-selector qq-upload-spinner"></span>
<span class="qq-upload-file-selector qq-upload-file"></span>
<span class="qq-edit-filename-icon-selector qq-edit-filename-icon" aria-label="Edit filename"></span>
<input class="qq-edit-filename-selector qq-edit-filename" tabindex="0" type="text">
<span class="qq-upload-size-selector qq-upload-size"></span>
<button type="button" class="qq-btn qq-upload-cancel-selector qq-upload-cancel">Cancel</button>
<button type="button" class="qq-btn qq-upload-retry-selector qq-upload-retry">Retry</button>
<button type="button" class="qq-btn qq-upload-delete-selector qq-upload-delete">Delete</button>
<span role="status" class="qq-upload-status-text-selector qq-upload-status-text"></span>
</li>
</ul>
<dialog class="qq-alert-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">Close</button>
</div>
</dialog>
<dialog class="qq-confirm-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">No</button>
<button type="button" class="qq-ok-button-selector">Yes</button>
</div>
</dialog>
<dialog class="qq-prompt-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<input type="text">
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">Cancel</button>
<button type="button" class="qq-ok-button-selector">Ok</button>
</div>
</dialog>
</div>
</script>
最佳答案
我通过以下方式在 Angular 5 中使用了fine-uploader。
install fine-uploader --save
import { s3 } from 'fine-uploader/lib/core/s3';
public uploader: any;
constructor() {
const componentInstance = this;
this.uploader = new s3.FineUploaderBasic({
button: document.getElementById('upload_image'),
debug: true,
autoUpload: true,
multiple: false,
validation: {
allowedExtensions: ['jpeg', 'jpg', 'png'],
sizeLimit: 10000000 // 50 kB = 50 * 1024 bytes
},
iframeSupport: {
localBlankPagePath: '/ui-kit.html'
},
cors: {
expected: true,
sendCredentials: true
},
objectProperties: {
acl: 'public-read'
},
callbacks: {
onSubmit: function (id, fileName) {
componentInstance.isImageUploaded = true;
const imgElement = document.getElementById('preview-image');
this.drawThumbnail(id, imgElement, null, false);
const file = this.getFile(id);
console.log(file);
},
onComplete: function (id, name, responseJSON, maybeXhr) {
},
onError: function (id, name, reason, maybeXhrOrXdr) {
componentInstance.isImageUploaded = false;
componentInstance._toastSearvice.pop('error', reason);
}
}
});
<div class="btn" id="upload_image">Upload image</div>
<div class="image-preview-container">
<img id="preview-image" src="">
</div>
关于angular - 我们如何将 Fine-uploader 与 Angular 5 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46406620/
我正在尝试在项目中学习和添加 Angular 国际化。我只能理解 Angular 文档 (https://angular.io/guide/i18n-overview) 的编译时翻译。 我需要这样的东
在我的 Angular 应用程序中,基于登录用户,我想通过显示/隐藏不同的菜单项或允许/禁止某些路由来授予或限制功能。 目前成功登录后,我的 .NET Core API 会返回一个 JWT token
我是 Angular 的新手,目前我已经看过 angular.io 网站提供的一些示例。但是在component decorator在文档中的解释,它指出 Angular components are
这里是service employee-service.service.ts的代码 import { Injectable } from '@angular/core'; import { HttpC
我目前正在使用@angular/http URLSearchParams 类来检索 URL 参数。在 Angular 5 中,注意到这已被弃用,但我没有看到以我当前使用的方式替换 URLSearchP
我目前正在使用@angular/http URLSearchParams 类来检索 URL 参数。在 Angular 5 中,注意到这已被弃用,但我没有看到以我当前使用的方式替换 URLSearchP
如何正确安装 PUG/JADE 到 Angular 2 或更高版本 这样在工作和 AOT 和 JiT 的同时 工作单元和集成测试 并且在创建每个新组件时不会受到太多影响 最佳答案 我看到了很多解决方案
我的 Angular 12 应用程序中有一些通用组件,我计划将其创建为一个 Angular 库,以便其他应用程序也可以使用它。我们有一些应用程序在较低版本的 angular(例如 angular 8/
tl;dr; ng build 删除了包含我编译的自定义库的/dist 文件夹。这会使我项目代码中对该库的所有引用无效,从而导致 ng build 最终失败。我做错了什么? 我关注了documenta
我正在将一些“遗留”(非 typescript )js 库导入到我的 Angular SPA 中。 通常我只是从 cdn 添加一个负载到 index.html 就像: 在 Angular 分量中我只
我有这个 angular 应用程序,它基本上使用了库的概念。 我有 2 个名为 的库Lib1 和 lib2 根据他们所服务的微服务分组。 现在我将这些库导入主应用程序,即 应用1 事情一直到现在。 现
我在我的项目中启用了 angular Universal。我现在想完全删除它。我试图删除以下文件 /server.ts /webpack.server.config.js /src/tsconfig.
我已经有一个 AuthService 在登录时对用户进行身份验证,并且 AuthGuard 在未登录的情况下阻止访问。 某些页面我通过 UserProfile/Role 限制访问,但现在我需要阻止页面
我正在尝试使用 angular、TypeORM、SQLite 和其他组件作为 webpack 构建 Electron 应用程序。 我从在 GitHub 上找到的示例开始我的开发:https://git
我在从 Angular 8 更新到 9 并运行时遇到以下错误 ng 更新@angular/material: Package "@angular/flex-layout" has an incompa
我正在尝试使用 Angular 9,我想创建一个项目,然后创建一个库项目并开始向其中添加我想稍后在 GitHub 上发布的通用模块,并在我的本地使用这些库项目。 相关依赖如下: Angular CLI
我正在尝试使用 Angular 9,我想创建一个项目,然后创建一个库项目并开始向其中添加我想稍后在 GitHub 上发布的通用模块,并在我的本地使用这些库项目。 相关依赖如下: Angular CLI
我正在我的 h1 元素“之前”创建一个小的程式化三 Angular 形图案,但我无法正确地圆 Angular 。右上角没问题,但其他两个有剪裁问题。 这是输出以及形状的放大图像: 使用的代码如下: h
我有一个 Angular 元素,带有自定义标记名 - fancy-button。如何将 fancy-button 嵌入 Angular 应用程序? 我已经尝试了以下方法,但都没有用 - 在 index
我已将我的项目从 angular 5.2.9 升级到 angular 6.0.0-rc.5。 除了包路径中的几个快速 RxJS 修复外,一切看起来都不错。(此链接非常有用:Want to upgrad
我是一名优秀的程序员,十分优秀!