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) |
Документацию кто читать будет?
http://fi2.php.net/manual/ru/features.file-upload.php |
это все я читал но я в тупике, ведь я не формой передаю а в javascript коде у меня уже встречается файл поэтому я не могу проверить if isset $_FILES['userfile']['name'] а проверка на $_POST и на $_FILES дает array(0)
В то время как файл в посте есть как его принять? |
Цитата:
Мало читать, нужно вникать в то, что пишется. |
Есть firebug в нем в ячейке POST показано что файл есть то есть он идет но PHP его не видит в массиве $_FILES, вы реально можете сказать как его в этом случае получить?
http://test.imedia.in.ua/main_contro...ages/portfolio |
Я вам еще раз повторяю, что файлы клиент может отправить только методом POST, у метода GET на это не хватит размера под него отведенного. А РНР возвращает информацию о загруженных по HTTP файлах ТОЛЬКО в массив $_FILES.
Если этот массив пуст, значит файл не получен сервером. Если читали руководство, там все написано - ошибки, как их получить и т.п. Проверяйте. |
Приведите пожалуйста пример, прошу вас, я там не могу найти как проверить почему сервер файл не получает
|
Отправлять надо как следует, ну и конечно анализировать ошибки, а не гадать на кофейной гуще.
<? 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> |
Формы нет никакой просто файл уже в коде javascript
как переменная как я выше написал file[0] |
А если только поле, то, отправлять тоже надо по уму, к примеру:
var data = new FormData(); data.append(this.name, this.files[0]); //.... data: data, где this ссылка на поле. |
Часовой пояс GMT +3, время: 03:19. |