У меня есть веб-страница, на которой предполагается загрузить изображение в базу данных с именем, описывающим изображение. Подумайте о загрузке логотипа и названия логотипа компании.
Когда я выбираю файл изображения и отправляю его в базу данных, я могу вернуть эту информацию на веб-странице в виде списка. Тем не менее, он не закодирован так, как я ожидал. Я хотел бы, чтобы файл изображения загружался в виде большого двоичного объекта, чтобы я мог преобразовать большой двоичный объект в Base64 и передать его своему веб-приложению.
Вот так выглядит код BLOB-объекта, если я вручную загружаю изображения с помощью графического интерфейса MySQL.
«iVBORw0KGgoAAAANSUhEUgAACWAAAAnHCAYAAAAIV ...», который я могу преобразовать в Base64 позже.
Когда я использую свою веб-страницу ajax для загрузки изображения, я получаю
"QzpcZmFrZXBhdGhcU3ByaW5nLnBuZw ==".
У меня вопрос: как я могу вместо этого загрузить ajax в виде большого двоичного объекта, чтобы мое Java-приложение могло правильно вызывать большой двоичный объект и преобразовывать его в Base64?
ajax.js
$(function (){
var $skills = $('#skills');
var $logo = $('#logo');
var $techName = $('#techName');
$.ajax({
type: 'GET',
url: '/api/technologyList',
success: function(skills) {
$.each(skills, function(i, skill) {
$('#skills-list').append('<tr><td> ' + skill.logo + '</td>' + '<td>' + skill.techName + '</td></tr>')
})
}
})
$('#addSkill').on('click', function () {
var skill = {
techName: $techName.val(),
logo: $logo.val()
}
$.ajax({
type: 'POST',
url:'/api/technologyList',
data: skill,
contentType: "multipart/form-data",
processData: false,
success: function (newSkill) {
$('#skills-list').append('<tr><td> '+ newSkill.logo+ '</td>' +
'<td> '+ newSkill.techName + '</td></tr>')
console.log(skill)
}
})
})
})
addSkill.html
<table id="skills-list">
<tr>
<th>Logo</th>
<th>Technology</th>
</tr>
</table>
<form id="skillForm">
<input type="text" id="techName"/> <br>
<input type="file" enctype="multipart/form-data" id="logo"/>
<button id="addSkill">Add!</button>
</form>
HomeController
@GetMapping(value = "/technology")
public String technologyList(Model theModel) throws IOException {
try {
List<Skills> userSkillsList = skillsService.findSkillList("wmangram");
List<byte[]> logo = skillsService.findLogos();
List<String> base64List = new ArrayList<>();
boolean isBase64 = false;
for (int i = 0; i < logo.size(); i++) {
if (Base64.isBase64(logo.get(i))) {
String base64Encoded = new String((logo.get(i)), "UTF-8");
base64List.add(base64Encoded);
}
else {
byte[] encodeBase64 = Base64.encodeBase64(logo.get(i));
String base64Encoded = new String(encodeBase64, "UTF-8");
base64List.add(base64Encoded);
}
}
theModel.addAttribute("userSkills", userSkillsList);
theModel.addAttribute("userImages", base64List);
return "technology";
}
catch (NullPointerException nexc) {
return "nullexception";
}
}