我正在尝试将图像上传到服务器,因为我已将图像转换为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);
答案 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);
希望有所帮助