尝试在查询参数中发送base64图像字符串时获取400 Bad Request?

时间:2017-04-21 15:34:56

标签: javascript angular http post base64

尝试在查询参数中为图像发送base64字符串,并获取400 Bad Request。 尝试以下方法: -

关于堆栈溢出已经过了这个问题。 根据这个,chrome可以在URL中拥有比我发送的更多字符imageBytes(29527个字符),

What is the maximum possible length of a query string ?

以下问题中的说明也没有帮助

Passing base64 encoded strings in URL ?

这是我的代码

如果我发送一个类似于“某事”的硬编码字符串代替form.imageBytes

,它的工作正常
$scope.submit = function(){
  var form = {};
  form.name = document.getElementById("recipient-name").value;
  form.desc = document.getElementById("message-text").value;
  form.owner = document.getElementById("message-text2").value;
  form.imageBytes = $scope.asdf;

  var data = JSON.stringify(form);

    debugger;
    var postString = "http://cos1plp:7030/tcw/interestgroup/addInterestGroups?name="+form.name+"&desc="+form.desc+"&owner="+form.owner+"&imageBytes="+form.imageBytes;

    $http.post(postString)

        .success(function (data, status, headers, config) {
        $scope.headers = headers();
        console.log('Response Headers:' + headers());
        })

        .error(function (data, status, headers, config) {
        $scope.headers = headers();
        });

}

1 个答案:

答案 0 :(得分:0)

Base64字符串可以包含特殊字符,即+ / =符号。您需要将它们编码为有效的url字符串。尝试将其添加到您的代码中:

data = data.replace(/\+/g, '%2B');
data = data.replace(/\//g, '%2F');
data = data.replace(/\=/g, '%3D');