0

我正在尝试上传文件 mp4 和 jpg 扩展名,我有 2 个单独的 Fileuploader 实例,对 2 个单独的 FileUploader 施加了一些自定义验证,我有一个上传按钮,单击上传按钮正在将 2 个 FileUploader 中的文件推送到单个 FileUploader 并调用内置方法 upload all 将文件上传到服务器,但它没有访问服务器(API 服务),我特此将代码粘贴到我尝试过的代码下方,请帮助我解决此问题。

文件上传器初始化

    uploader: FileUploader;
    coverImageUploader: FileUploader;
    mergedFileUploader: FileUploader;
    options: FileUploaderOptions = {
        url: URL,
        authToken: `Bearer Token`,
        authTokenHeader: 'authorization',
        isHTML5: true,
        method: 'POST',
        itemAlias: 'file',
        headers: [{
            name: 'refId',
            value: ''
        }, {
            name: 'userId',
            value: ''
        }, {
            name: 'roleId',
            value: ''
        }]
    }

        this.uploader = new FileUploader(this.options);
        this.coverImageUploader = new FileUploader(this.options);
        this.mergedFileUploader = new FileUploader(this.options);
 

将尚未上传的文件从 2 FileUploader 推送到另一个 FileUploader

      let files: any = []  
      files.push(this.uploader.getNotUploadedItems().filter((f: FileItem) => !f.isUploading))  
      files.push(this.coverImageUploader.getNotUploadedItems().filter((f: FileItem) => 
      !f.isUploading)) 

var merged = [].concat.apply([], files);
        merged.forEach(e => {
            e.options.headers.find((o, i) => {
                            if (o.name === 'refId') {
                    e.options.headers[i] = {
                        name: 'refId',
                        value: e.formData.reduce(r => r).RefId

                    };
                    return true;
                } else if (o.name === 'userId') {
                    e.options.headers[i] = {
                        name: 'userId',
                        value: user.userId.toString()
                    };
                    return true; 
                } else if (o.name === 'roleId') {
                    e.options.headers[i] = {
                        name: 'userId',
                        value: user.roleId.toString()
                    };
                    return true; 
                }
            })
        })
        this.uploader.clearQueue();
        this.coverImageUploader.clearQueue();
        this.mergedFileUploader.clearQueue()
        this.isUploadProcessing = true
        this.mergedFileUploader.addToQueue(files)

上传按钮点击事件方法

UploadFiles(){
this.mergedFileUploader.uploadAll()
}
4

1 回答 1

0

无法获得很多文件上传器部分,尽管可能值得尝试在 javascript 中使用简单的 FileReader 来实现类似的功能(读取文件内容,然后使用 http 客户端服务进行所需的服务器调用)。看这里:

https://javascript.info/file

于 2021-03-07T18:09:21.957 回答