1

我正在使用 react-native-fetch-blob 库。但是,当发送 404 消息时,它会创建一个空文件并将其命名为 brag6.zip。这是我的代码:

try {
    response = await RNFetchBlob
    .config({
        path: RNFetchBlob.fs.dirs.DocumentDir + "/temp/blag6.zip"
    })
    .fetch(
        'POST',
        'http://example.com/data/getTestSet.php',
        {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        JSON.stringify({
            'passcode': "pass123",
            'group_id': "1",
            'file': "ShgRG/suvA/blag.zip"
        })
    )


    temp_file = RNFS.DocumentDirectoryPath + "/temp/blag6.zip"
    output_path = RNFS.DocumentDirectoryPath + "/output

    await ZipArchive.unzip(temp_file, output_path)
    console.log("This line is never reached.")
}
catch (err){
    console.log(err)
}

我收到以下错误:

Error: Failed to extract file File too short to be a zip file: 0

有没有办法防止 RNFetchBlob 保存空文件并引发错误?我怎么知道错误是什么?

更新:

现在我正在使用以下临时修复:

status = response.info().status

//check if file exists here, throw error otherwise

file_name = RNFetchBlob.fs.dirs.DocumentDir + "/temp/blag6.zip"

file_stat = await RNFS.stat(file_name);
file_size = file_stat.size;

if (status != 200 || file_size == 0){
    await RNFS.unlink(file_name);
    throw "My error message";
}

如果没有可用的文件,RNFetchBlob 是否仍然创建文件?如果没有要保存的文件,有什么方法可以防止它创建一个空文件?

4

0 回答 0