post数据添加一个二进制变量

支持芯片: ESP32-S3系列

void wifiup_addbin(str field,int addr,int size);
//field: post数据的数据字段名
//addr:二进制数据在psram中的地址
//size:二进制数据的长度

本语句针对psram中以addr地址开始,长size字节的数据进行BASE64转换后合成POST数据,由于需要合成POST数据,因此这个BASE64转换是URL SAFE,与标准的base64差异是: - 原有符号'+'用符号'-'代替 - 原有符号'/'用符号'_'代替 - 尾部填充的'='直接删除

示例

wifiup_clear(0);
wifiup_addstr("name","张三");
wifiup_addbin("qdata",0x1000,256);

备注:

附:各种语言对于base64与urlsafe的base64的转换:

public static String safeUrlBase64Encode(byte[] data){
    String encodeBase64 = new BASE64Encoder().encode(data);
    String safeBase64Str = encodeBase64.replace('+', '-');
    safeBase64Str = safeBase64Str.replace('/', '_');
    safeBase64Str = safeBase64Str.replaceAll("=", "");
    return safeBase64Str;
}
public static byte[] safeUrlBase64Decode(final String safeBase64Str){
    String base64Str = safeBase64Str.replace('-', '+');
    base64Str = base64Str.replace('_', '/');
    int mod4 = base64Str.length()%4;
    if(mod4 > 0){
        base64Str = base64Str + "====".substring(mod4);
    }
    return new BASE64Decoder().decodeBuffer(base64Str);
}
public static function urlsafe_b64decode($string) {
    $data = str_replace(array('-','_'),array('+','/'),$string);
    $mod4 = strlen($data) % 4;
    if ($mod4) {
        $data .= substr('====', $mod4);
    }
    return base64_decode($data);
}

function urlsafe_b64encode($string) {
    $data = base64_encode($string);
    $data = str_replace(array('+','/','='),array('-','_',''),$data);
    return $data;
}