Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (1)

Наибольший вклад в теги

Все теги (6)

Лучшие ответы пользователя

Все ответы (9)
  • Как отправить картинку методом POST после вставки картинки через ctrl+v?

    Jhon_Light
    @Jhon_Light Автор вопроса
    Пришел к такому выводу
    $(document).ready(function(e) {
    	
          // показываем картинку. Отменяем события для формы
      	var port = $('.port').css('display','none');
    	$("#text").change(function () {
    		$('#sendFormNews').submit(function(){return false;});
    		port.css('display','block');
    		$('.uploadIcon').css('display','none');
    	});
    });
    // вешаем слушателя
    window.addEventListener('load', function(e) {
            // откуда пришла картинка
    	let input = document.querySelector("#text");
            // где показать
    	let windowPrevImg = document.querySelector('#image_upload_preview');
    	// наша форма для отправки
    	let sendFormNews = document.getElementById('sendFormNews');
    
            // функция для страховки
    	function uploadPasteImage()
    	{
               // еще один слушатель - вешаем на submit - валидим форму один словом. (у меня аякс валидация выше)
    	    sendFormNews.addEventListener('submit',(e) => {
               // конвертим нашу строку base64 - говорим что это файл
    	    function dataURLtoFile(dataurl, filename) {
    		    var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
    		    bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
    		    while(n--){
    		        u8arr[n] = bstr.charCodeAt(n);
    		    }
                        //отдаем результат
    		    return new File([u8arr], filename, {type:mime});
    		}
                    // вытягиваем base64 с картинки/прелоада 
    		var pasteImage = windowPrevImg.getAttribute('src');
                    // скармливаем функции да бы получить нужный нам файл да бы обьяснить серверу что это файл
    		var file = dataURLtoFile(pasteImage, input.value);
    		
                   // юзаем FormData https://developer.mozilla.org/ru/docs/Web/API/FormData
                   // в качестве аргумента передаем нашу форму
    		var fd = new FormData(sendFormNews);
                  // ищем нужное нам поле в форму и передаем туда наш полученный файл, который мы получили ранее
    		fd.append('News[image]',file);
                   // дальше дело техники
                    // вызываем
    		var request = new XMLHttpRequest();
                    // говорим куда и как 
    		request.open("POST", window.location.href);
                   // загружаем "если" делай то то
    		request.onload = function(oEvent) {
    		window.location.replace("/cabinet/my-news");
    			} else {
    				console.log("Error " + request.status + " occurred when trying to upload your file.<br \/>");
    			}
    		};
    		// отправляем
    		request.send(fd);
    		
    		});
    		
                   // события для копирования
    		input.addEventListener("paste",function(event){
    	    let items = (event.clipboardData || event.originalEvent.clipboardData).items;
    	    for (index in items) {
    	        let item = items[index];
    	        if (item.kind === 'file') {
    	            let blob = item.getAsFile();
    	            let reader = new FileReader();
    	            reader.onload = function(event){
    	                windowPrevImg.setAttribute('src', event.target.result);
    	            }; 
    	            reader.readAsDataURL(blob);
    	            }
    	        }
    	    });	
    	}
           // инициализируем нашу функцию
    	uploadPasteImage();
    });
    Ответ написан
    Комментировать
  • Почему картинка сохраняется как папка?

    Jhon_Light
    @Jhon_Light Автор вопроса
    Магия кроется вот здесь
    $file -> move( public_path() . '/upload_for_post/' . $blog -> id . '/' . $input[ 'image' ] );

    Нужно перед $input[ 'image' ] указать " , " а не " . "
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (50)