如何通过XMLHttpRequest()发送请求

时间:2015-10-07 10:51:24

标签: javascript web-services post xmlhttprequest base64

我正在尝试将图像上传到服务器,因为我已将图像转换为base64encode字符串,我需要将该base64encode字符串传递给webservice,该webservice将base64字符串转换为file并保存在database.but base64encode string has当我将此字符串传递给webservice时,我发现以下错误,大约(85,000)。

 Failed to load resource: the server responded with a status of 400 (Bad Request) 

我需要通过使用XMLHttpRequest()而不使用ajax来传递这个,jquery请帮助我。

下面是我的代码。

                    var filesToBeUploaded = document.getElementById("afile");
                        var file = filesToBeUploaded.files[0];
                        var reader = new FileReader();
                        reader.onload = function(event) {
                            var binaryStringResult = reader.result;                     

                            var binaryString =binaryStringResult.split(',')[1];
                            var xhr = new XMLHttpRequest();
                            xhr.open("POST","http://url/api/jsonws/Global-portlet.org_roles/add-file-entry?repositoryId=11304&folderId=0&sourceFileName=test108.jpeg&mimeType=image%2Fjpeg&title=test108.jpeg&description=test108.jpeg&changeLog=test108.jpeg&basecode64="+ binaryString);


                            xhr.setRequestHeader("Authorization","BasicbmFyYXlhbmFAdmlkeWF5dWcuY29tOnRlc3Q=");
                            xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');

                            xhr.send();

                            xhr.onload = function() {
                                alert('in sucess');

                            };
                            xhr.onerror = function(e) {
                                alert('in error');
                            };

                        }
                        reader.readAsDataURL(file);

2 个答案:

答案 0 :(得分:0)

对于POST,请不要将其包含在URL中,您需要将其放入正文中,即

xhr.send(binaryString);

我怀疑您的内容类型的应用程序/ x-www-form-urlencoded在这种情况下是正确的。

答案 1 :(得分:0)

我认为您在此遇到的问题是您超出了查询字符串的最大长度。

您需要做的事情如下:

var xhr = new XMLHttpRequest();
var url = "http://url/api/jsonws/Global-portlet.org_roles/add-file-entry";
var params = "repositoryId=11304&folderId=0&sourceFileName=test108.jpeg&mimeType=image%2Fjpeg&title=test108.jpeg&description=test108.jpeg&changeLog=test108.jpeg&basecode64="+ binaryString;
xhr.open("POST", url, true);

xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Content-length", params.length);
xhr.setRequestHeader("Connection", "close");

xhr.onreadystatechange = function() {
    if(xhr.readyState == 4 && xhr.status == 200) {
        alert(xhr.responseText);
    }
}
xhr.send(params);

希望有所帮助