Отправка файлов вместе с данными
Есть, к примеру, такая форма:
<form action="action.php?type=newfile" method="POST" enctype="multipart/form-data"> <input type="text" name="title"> <input type="file" name="myfile" multiple="multiple"><br><br> <span id="dropBox">Перетащите файл на эту область</span> </form> И кусок скрипта для отправки данных: data = объект image или blob var formData = new FormData(); formData.append('file', data); formData.append('filenote', {type:'avatar',title:'it+s me'}); var xhr = new XMLHttpRequest(); xhr.open("POST", $.('form').attr('action')); xhr.send(formData); В итоге получаю 3 массива $_GET: type => newfile $_FILE: file => array(данные файла) $_POST: filenote => [object Object] C данными из ПОСТ невозможно работать, делаю по-другому: в js: JSON.stringify({type:'avatar',title:'it+s me'}) в php: json_encode($_POST['filenote']); На выходе: "{\"type\":\"avatar\",\"title\":\"it+s me\"}" Уже лучше, но все равно невозможно работать. Как в ПОСТ получить filenote => array(мои данные)? P.S. Желательно так же получать filenote => var, если передается не объект, а переменная и желательно все это делать в js, а в ПОСТ получать очищенные данные |
Я понятия не имею как правильно с точки зрения JS, но
<?php $str = '{\"type\":\"avatar\",\"title\":\"it+s me\"}'; $json = stripslashes($str); $array = json_decode($json, true); print_r ( $array ); // вернет ассоциативный массив ?> |
Вот я тупой! Не ту функцию использовал! Зачем-то закодировал в JSON, вместо обратного.
Нужно использовать json_decode($_POST['filenote'], true) тогда все хорошо. Опять же, остается вопрос, как и от нее избавиться. В js должно быть что-то типа: note = переменная или объект js formData.append('filenote', xfunction(note)); а в $_POST соответсвенно либо переменная, либо массив, которые можно использовать для дальнейшей обработки. Собственно, какой должна быть xfunction(note)? |
Часовой пояс GMT +3, время: 21:47. |