#javascript #jquery #ajax #spring #spring-boot
Вопрос:
У меня есть некоторые текстовые данные и изображения на стороне сервера. и мне нужно отправить эти данные в виде объекта JSON. Но я не могу отправлять такие изображения из-за FormData.Поэтому мне нужно преобразовать данные моей формы в один объект JSON. Пожалуйста, помогите мне… Спасибо Тебе..!
HTML-часть —
<form>
<div class="form-group">
<label for="txtcustomerImage"> <i class="tags icon"></i> Image Of Your NIC</label>
<input class="form-control-file" id="txtcustomerImage" type="file" name="txtcustomerImage">
</div>
</form>
Часть Ajax —
$('#btnCreateNewAccount').click(function () {
var fileObject = $("#txtcustomerImage")[0].files[0];//access file object from input field
var fileName = $("#txtcustomerImage")[0].files[0].name; //get file name
var form = new FormData(); //setup form data object to send file data
form.append("custImage", fileObject, fileName); //append data
console.log('clicked..');
let customerNIC = $('txtcustomerNIC').val();
let customerName = $('txtcustomerName').val();
let customerAddress = $('txtcustomerAddress').val();
console.log(form)
$.ajax({
method: "post",
url: "http://localhost:8080/Sprinf_Final-Back-end/customer",
contentType: "application/json",
data: JSON.stringify({
customerNIC: customerNIC,
customerName: customerName,
customerAddress: customerAddress,
}),
success: function (res) {
if (res.massage == 'Success') {
alert('Your Account is Successfully Created!When You Log to Server Use Your User Name amp; Password..!');
console.log(res);
} else {
console.log('error');
}
}
});
});
Комментарии:
1. Придира: Это объект JSON . Возможно, это не то, чего ты хочешь.
Ответ №1:
Нет смысла создавать FormData
объект, если вы хотите отправить данные в формате JSON. Вы можете прочитать содержимое файла fileObject.text()
и отправить его:
$('#btnCreateNewAccount').click(async function() {
const fileObject = $("#txtcustomerImage")[0].files[0]; //access file object from input field
const fileName = fileObject.name; //get file name
const data = JSON.stringify({
fileObject: await fileObject.text(),
fileName
})
console.log(data);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form>
<div class="form-group">
<label for="txtcustomerImage"> <i class="tags icon"></i> Image Of Your NIC</label>
<input class="form-control-file" id="txtcustomerImage" type="file" name="txtcustomerImage">
</div>
</form>
<button id="btnCreateNewAccount">
Click
</button>
Комментарии:
1. могу ли я сохранить данные const в mn SQL DB..?
2. @Gathsara Данные являются постоянными в клиентском коде. После того, как он отправлен на сервер, разницы нет. В JSON нет константы.
3. частный байт [] custImage — это может хранить данные изображения..?
4. @Gathsara Да, массив байтов может хранить данные изображений.
5. CustomerDTO(CustID=null, custName=null, custAddress=null, custImage=null) — Но мое значение равно null.. Я не преуменьшаю.