在 React Native 中使用 @aws-sdk/lib-storage 分段上传到 S3

Ale*_*ric 5 mobile amazon-s3 amazon-web-services reactjs react-native

我有以下代码;

 const readFileAsStream = async (
        fileUri,
        encoding = "base64",
        bufferSize = 4095
    ) => {
        return new Promise((resolve, reject) => {
            RNFetchBlob.fs
                .readStream(fileUri, encoding, bufferSize)
                .then(ifstream => {
                    ifstream.open();
                    resolve(ifstream);
                })
                .catch(err => {
                    reject(err);
                });
        });
    };

    // usage example
    readFileAsStream(fileUri)
        .then(stream => {
            const upload = new Upload({
                client: s3,
                params: {
                    Bucket: S3_BUCKET_NAME,
                    Key: key,
                    Body: stream
                },
                partSize: 1024 * 1024 * 5 // minimum part size allowed by S3
            });
            upload.on("httpUploadProgress", progress => {
                console.log(progress);
            });
            upload.done();
        })
        .catch(err => {
            console.log(err);
        });
Run Code Online (Sandbox Code Playgroud)

第一部分旨在将本地文件作为流读取,第二部分使用@aws-sdk/lib-storage 包将其上传到 S3。

我尝试将文件转换为缓冲区、blob 或流,但根据格式出现各种错误,例如“ReadableStream 未定义”、“Buffer 未定义”等。

这个包更多地用于网络,所以这里假设这些是包错误。有人在 React Native 中使用这个包将文件上传到 AWS S3 吗?