后端API接口项目,请参考local-server 项目,使用Spring boot框架实现本地存储服务。
前端使用Angular + ng-zorro实现,项目源码在这里Gitee
模型(model)
需要定义文件元数据(metadata)模型,描述文件信息, 在local.model.ts中定义
export class Metadata extends BaseEntity {
createdBy!: string;
createdDate!: Date;
name!: string;
path!: string;
contentType!: string;
size!: number;
constructor(data?: Partial<Metadata>) {
super(data);
Object.assign(this, data);
if (data?.createdDate != undefined) {
this.createdDate = new Date(data.createdDate);
}
}
}
元数据ID在BaseEntity对象中定义。此模型定义了名称,路径,类型,大小等关键信息
服务(Service)
local.service.ts
@Injectable({ providedIn: 'root' })
export class LocalService {
private baseFileUrl = '/oss/v1/files';
private baseMetadataUrl = '/oss/v1/metadatas';
private upload$ = new Subject<Metadata>();
private remove$ = new Subject<Metadata>();
constructor(private http: BaseHttpService) {}
public get onUpload(): Observable<Metadata> {
return this.upload$.asObservable();
}
public get onRemove(): Observable<Metadata> {
return this.remove$.asObservable();
}
uploadEvent(formData: FormData): Observable<HttpEvent<any>> {
return this.http
.post<any>(`${this.baseFileUrl}/upload`, formData, null, {
observe: 'events',
reportProg