У меня есть регистрационная форма (приложение Spring mvc), которая имеет некоторые поля, а также возможность загрузки изображений, я посылаю значение поля контроллеру с помощью функции ajax через serialize()Как сохранить изображение в другой папке с помощью ajax и jquery
Теперь я хочу отправить изображение через один и тот же запрос, и что когда-либо изображение, выбранное пользователем, которое должно быть предварительно просмотрено пользователем перед отправкой запроса на контроллер. поэтому для предварительного просмотра, я уверен, преобразование выбранного изображения в байт-код и добавив, что «ЦСИ» атрибут тега изображения
Jquery Для предварительного просмотра изображения
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#imagePreview').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
$("#imgInput").change(function(){
readURL(this);
});
HTML изображения и ввода тегов
<input name=file type="file" id="imgInput"></input>
<img id="imagePreview" src="" alt="Item Image" width="96" height="80"/>
по вышеуказанному коду я могу получить предварительный просмотр. теперь как часть требования по отправке формы мне нужно отправить поля формы, а также изображение для этого, я беру код байта, присутствующий в атрибуте «src» тега изображения, и отправляю его с значениями поля с помощью ajax
Ajax форма отправить
function saveCatalogueForm(){
var catalogValue = $("#catalogueForm").serialize();
var imageInByte =$('#imagePreview').attr('src');
/* console.log(fd) */
$.ajax({
type: "POST",
dataType : "json",
url:"../catalogue/create.action?catalogValue="+catalogValue+"&fd="+imageInByte,
success:function(response){
alert("Submited Successfully");
}
});
}
это мой контроллер
@RequestMapping(value="/catalogue/create.action", method=RequestMethod.POST)
public @ResponseBody Long create(CatalogueBase catalogueForm,byte[] fd) throws Exception {
Long parentId = null;
System.out.println(fd);
// some logic goes hear
return parentId;
}
то, что я хотел.
приведенный выше код работает отлично для менее kb изображений, подобных bellow 3-6 kb, не более того, если я отправил больше, чем тогда, то я получу ошибку с ошибкой 400 (я увеличил размер POST до 2mb в apache server.xml страница) ...?
Я делаю способ записи или любым другим способом я могу отправить изображение через ajax ...?
любая помощь будет присвоено, спасибо
жаль все еще получаю ту же ошибку: POST HTTP: // локальный: 8083/Elib/Каталог/create.action catalogValue = ID = & dupTitl ... Fur1% 2FpK0lMkLjuSn % 2B6srKKQsm0J8U6csN5IQ6ZB4JHL% 2BavaysrqOTZ% 2F% 2F2Q% 3D% 3D 400 (неверный запрос) – user2210064
@ user2210064 Из сообщения об ошибке я вижу, что запрос отправляется в '/ elib/catalog/create.action', это правильный путь? из вашего сопоставления, кажется, правильный путь должен быть «url:» /catalogue/create.action »' –
ya it is correct '/ elib /' является родительской папкой, поэтому в URL-адресе ajax я упоминал URL: "../ catalog /create.action», – user2210064