我尝试了这段代码,但它没有用。对于在xml标记中发送base64字符串的上述问题的任何建议或任何解决方案。 我已经搜索了很多关于使用这个xml标签(即xml解析)传递给java服务器的base64字符串,但没有得到任何结果。
function fileSelectedForLogo() {
var oFile = document.getElementById('image_file').files[0];
if(oFile.size/1024 <= 50){
var oImage = document.getElementById('preview');
var oReader = new FileReader();
oReader.onload = function(e){
oImage.src = e.target.result;
var resultStr = oImage.src;
var result = resultStr.split(",");
$('#LogoImageKey').val(result[1]);
};
alert($('#LogoImageKey').val())
oReader.readAsDataURL(oFile);
}else{
alert(" Please Upload Less 50 KB ")
}
}
function creatingXMLRequest(){
var Name = $('#Name').val();
var logoImage = $('#LogoImageKey').val();
alert(logoImage);
var xml="<Request>" +
"<Data>" +
ifValueInsert(Name,"CName")+
ifValueInsert(logoImage,"LogoImage")+
"</Data>" +
"</Request>";
}
function ifValueInsert(value , tagName)
{
alert(value+" == "+tagName)
if(value!=undefined && value!='' && value!=null)
{
return "<"+tagName+">"+value+"</"+tagName+">";
}
return "";
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<body>
<input type="hidden" id="LogoImageKey" value="" />
<label id="lblupload">Image Upload:</label>
<input id="image_file" type="file" onChange="fileSelectedForLogo();" />
<input type="button" onClick="creatingXMLRequest();" value="Submit" />
</body>
答案 0 :(得分:5)
您的代码包含很多错误。我注释了其中一些:
alert($('#LogoImageKey').val())
fileSelectedForLogo
:您在此处尝试访问$('#LogoImageKey').val()
之前实际设置。实际上,此属性是在仅oReader.onload
之后调用的oReader.readAsDataURL(oFile)
回调中设置的
在document.getElementById('preview')
中的fileSelectedForLogo
:您正在寻找未定义的元素(至少在您的html代码段中)$('#Name').val()
再次定义一个未定义的元素(至少在你的html片段中)这是工作代码。我冒昧地添加了一个缺少的元素以及一个div来包含图像的base64表示(并删除了几个警报)。我保留了你的基础结构(即使它可以使一些严重的重构受益),这样你就能更好地理解改变了什么。
function fileSelectedForLogo() {
var oFile = document.getElementById('image_file').files[0];
if(oFile.size/1024 <= 50){
var oReader = new FileReader();
oReader.onload = function(e){
var resultStr = e.target.result;
var result = resultStr.split(",");
$('#preview').attr("src", e.target.result);
$('#LogoImageKey').val(result[1]);
$('#base64').text(result[1]);
};
oReader.readAsDataURL(oFile);
} else {
alert(" Please Upload Less 50 KB ")
}
}
function encodeXML(str) {
return str.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"')
.replace(/'/g, ''');
}
function creatingXMLRequest(){
var Name = $('#Name').val();
var logoImage = $('#LogoImageKey').val();
var xml="<Request>" +
"<Data>" +
ifValueInsert(Name,"CName")+
ifValueInsert(logoImage,"LogoImage")+
"</Data>" +
"</Request>";
console.log(xml);
}
function ifValueInsert(value , tagName) {
//alert(value+" == "+tagName)
console.log(value+" == "+tagName);
if(value!=undefined && value!='' && value!=null) {
return "<"+tagName+">"+encodeXML(value)+"</"+tagName+">";
}
return "";
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<body>
<input type="hidden" id="LogoImageKey" value="" />
<label id="name-upload">Logo Name:</label>
<input id="Name" type="text" value="" />
<label id="lblupload">Image Upload:</label>
<input id="image_file" type="file" onChange="fileSelectedForLogo();" />
<input type="button" onClick="creatingXMLRequest();" value="Submit" />
<img id="preview" src="" />
<div id="base64" />
</body>
&#13;
一些一般性评论:
<, >, ", &
(这是encodeXML
函数的作用)getElementById
和jQuery选择器(例如$("#foo")
)console.log(xml)
)