当没有可供下载时,RNFetchBlob仍会创建空文件

时间:2018-01-10 22:55:59

标签: javascript react-native react-native-fetch-blob

我正在使用react-native-fetch-blob库。但是,当发送404消息时,它会创建一个空文件并将其称为blag6.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,是否还有原因?如果没有要保存的文件,有没有办法阻止它创建一个空文件?

0 个答案:

没有答案