
03.01.2017, 00:20
|
|
Профессор
|
|
Регистрация: 20.05.2014
Сообщений: 292
|
|
|
AJAX $_FILES
ЗДРАВСТВУЙТЕ что удивительно
вот я передаю постом файл
function fileSelectFunc(e) {
e.stopPropagation();
e.preventDefault();
var file = e.target.files || e.dataTransfer.files;
$.ajax({
url: "/server/ajax_php_file.php", // Url to which the request is send
type: "POST", // Type of request to be send, called as method
data: file[0], // Data sent to server, a set of key/value pairs (i.e. form fields and values)
contentType: false, // The content type used when sending data to the server.
cache: false, // To unable request pages to be cached
processData:false, // To send DOMDocument or non processed data file it is set to false
success: function(data) // A function to be called if request succeeds
{
if (file[0].type.match('image/*'))
ParseFile(file[0]);
else
e.target.className = '';
}
});
POST: http://imedia.in.ua/server/ajax_php_file.php
В консоли вижу POST [object ]
И постом идет графический файл но в Response
print_r($_POST);
В обработчике пытаюсь распечатать пост array (0)
Последний раз редактировалось imedia, 03.01.2017 в 21:49.
|
|

03.01.2017, 03:52
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
|
|
|

03.01.2017, 19:02
|
|
Профессор
|
|
Регистрация: 20.05.2014
Сообщений: 292
|
|
|
это все я читал но я в тупике, ведь я не формой передаю а в javascript коде у меня уже встречается файл поэтому я не могу проверить if isset $_FILES['userfile']['name'] а проверка на $_POST и на $_FILES дает array(0)
В то время как файл в посте есть как его принять?
|
|

03.01.2017, 19:37
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
|
Сообщение от imedia
|
|
ведь я не формой передаю а в javascript коде
|
Какая хрен разница - РНР помещает данные по загруженным файлам в массив $_FILES, где в руководстве написано, что эти данные можно найти в $_POST?
Мало читать, нужно вникать в то, что пишется.
|
|

03.01.2017, 20:18
|
|
Профессор
|
|
Регистрация: 20.05.2014
Сообщений: 292
|
|
Есть firebug в нем в ячейке POST показано что файл есть то есть он идет но PHP его не видит в массиве $_FILES, вы реально можете сказать как его в этом случае получить?
http://test.imedia.in.ua/main_contro...ages/portfolio
|
|

03.01.2017, 20:28
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
|
Я вам еще раз повторяю, что файлы клиент может отправить только методом POST, у метода GET на это не хватит размера под него отведенного. А РНР возвращает информацию о загруженных по HTTP файлах ТОЛЬКО в массив $_FILES.
Если этот массив пуст, значит файл не получен сервером. Если читали руководство, там все написано - ошибки, как их получить и т.п. Проверяйте.
|
|

03.01.2017, 20:44
|
|
Профессор
|
|
Регистрация: 20.05.2014
Сообщений: 292
|
|
|
Приведите пожалуйста пример, прошу вас, я там не могу найти как проверить почему сервер файл не получает
|
|

03.01.2017, 20:59
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Отправлять надо как следует, ну и конечно анализировать ошибки, а не гадать на кофейной гуще.
<?
if($_POST) {
exit('POST '.print_r($_POST, 1).'FILES '.print_r($_FILES, 1));
}
?>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script>
$(function() {
$('form').on('submit', function(e){
e.preventDefault();
$.ajax({
url: this.action,
type: 'POST',
contentType: false,
processData: false,
data: new FormData(this),
dataType: 'text',
success: function(data){
if(!!data){
alert(data);
}
}
});
});
});
</script>
</head>
<body>
<form action="" method="post" enctype="multipart/form-data">
<input type="text" name="file_name" value="name_file"/><br/>
<input type="file" name="file_body"/><br/>
<input type="submit" value="Отправить"/>
</form>
</body>
</html>
|
|

03.01.2017, 21:47
|
|
Профессор
|
|
Регистрация: 20.05.2014
Сообщений: 292
|
|
|
Формы нет никакой просто файл уже в коде javascript
как переменная как я выше написал file[0]
|
|

03.01.2017, 21:59
|
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
А если только поле, то, отправлять тоже надо по уму, к примеру:
var data = new FormData();
data.append(this.name, this.files[0]);
//....
data: data,
где this ссылка на поле.
|
|
|
|