无法使用 ngx-awesome-uploader 重命名文件

Posted

技术标签:

【中文标题】无法使用 ngx-awesome-uploader 重命名文件【英文标题】:Cannot rename file with ngx-awesome-uploader 【发布时间】:2022-01-24 02:30:05 【问题描述】:

我正在使用https://www.npmjs.com/package/@sleiss/ngx-awesome-uploader,但在上传之前我找不到重命名文件的方法。

我检查了方法,似乎没有。

我可以重命名适配器中的文件,它使用新名称上传,但在文件列表中它仍然使用旧名称。因此,当我尝试删除它时,它会查找具有旧名称的文件。

有没有办法重命名文件并使其可用于文件列表?

谢谢!

【问题讨论】:

请分享问题的minimal reproducible example。最好是use a snippet. 【参考方案1】:

我想我明白了。鉴于此适配器...

import  AngularFireStorage  from "@angular/fire/storage";
import  FilePickerAdapter, FilePreviewModel, UploadResponse, UploadStatus  from "ngx-awesome-uploader";
import  from, Observable, of  from "rxjs";
import  catchError, map  from "rxjs/operators";
import  Uuid  from "../externalLibraries/uuid/uuid";

export class FirebaseStorageFilePickerAdapter extends FilePickerAdapter 
    constructor(
        private firebaseStorage: AngularFireStorage
    ) 
        super();
    

    uploadFile(fileItem: FilePreviewModel): Observable<UploadResponse> 
        const file = fileItem.file;
        const path = `public/$Uuid.generateUUID().$fileItem.fileName.split('.')[1]`;
        const ref = this.firebaseStorage.ref(path);
        return from(this.firebaseStorage.upload(path, file, 
            contentType: fileItem.file.type
        )).pipe(
            map((response) => 
                let returnedResponse: UploadResponse;
                switch (response.state.toLowerCase()) 
                    case 'canceled':
                    case 'error':
                    case 'paused':
                        returnedResponse = 
                            status: UploadStatus.ERROR,
                        ;
                        break;

                    case 'success':
                        returnedResponse = 
                            status: UploadStatus.UPLOADED,
                            body: response.metadata,
                            progress: 100
                        
                        break;

                    default:
                        returnedResponse = 
                            status: UploadStatus.IN_PROGRESS,
                            body: response.metadata,
                            progress: (response.bytesTransferred / response.totalBytes) * 100
                        
                        break;
                
                return returnedResponse;
            ),
            catchError((err, caught) => 
                console.error(err)
                return of( status: UploadStatus.ERROR )
            )
        );
    

    removeFile(fileItem: FilePreviewModel): Observable<any> 
        return this.firebaseStorage.ref(fileItem.uploadResponse.fullPath).delete();
    

我的问题是在尝试删除文件时使用public/$fileItem.filename,但它不存在。但是,新名称出现在 uploadResponse 对象中,所以现在我从 fileItem.uploadResponse.fullPath 获取 fullPath

【讨论】:

以上是关于无法使用 ngx-awesome-uploader 重命名文件的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2000无法使用

无法访问您试图使用的功能所在的网络位置

无法使用 StorageClass 配置卷 - 无法获取存储帐户的存储密钥

Worklight Studio 和本地开发,有时无法使用 Java 类,有时无法使用 HTML 文件

ADB无法使用解决办法

Ubuntu 80端口无法使用-非root用户无法使用1024以下端口