Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   AJAX $_FILES (https://javascript.ru/forum/dom-window/66689-ajax-%24_files.html)

laimas 05.01.2017 21:32

Даже так, то что у вас творится на странице по ссылке вы считаете нормальным рабочим процессом?

Зачем предлагаю? Может я и не прав, но вы не понимаете много, либо пытаетесь решать все методом научного тыка. Вот простой пример, я пишу примером как отправить файл ajax:

var data = new FormData();
data.append(argument_1, argument_2);

вы повторяете это так:

data.append(argument_1, argument_2, argument_3);

Да, метод .append() может принимать три аргумента. Но если вы так пишите в коде своем, значит вы даже не представляете чем это чревато.

Ваш код не есть нечто бесценное, drag&drop не работает, выбрать традиционно тоже нельзя, то есть поведение страницы при попытке загрузить файл поставит в ступор любого вашего пользователя. И к этому прикручивать?

Поэтому и предлагаю - возьмите готовое, и всего-то потребуется прочесть как подключить. Все. А навести красоту вам нужную, так это как хотите.

PS. я разобраться в этом хочу. Хорошо, но надо разбираться, а не тыкать бездумно, и начать с простого - отправить файл традиционно выбрав его в диалоге. Как это сделать примеры были.
Далее сделать предпросмотр выбранного для загрузки, что можно сделать посредством FileReader, и таковое в вашем коде есть. Разобрались, поняли как работает, то есть не будет возникать вопросов как это можно "прикрутить" к любой ситуации. А потом таинство перетаскивания, а я давал ссылку, где можно об этом все расжованное прочесть, читайте.

imedia 06.01.2017 13:34

Хорошо убедили я снес тот неудачный плагин, но если коснуться принципа вот я выбрал ваш пример яваскриптовский
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script>
document.addEventListener("DOMContentLoaded", function() {
    document.querySelector('#file-select').addEventListener('change', function() {
        var xhr = new XMLHttpRequest(),
            data = new FormData();
         
        data.append(this.name, this.files[0]);
        xhr.open('POST', '/server/ajax_php_file.php');
        xhr.onload = function() {
            if (xhr.status == 200) {
                alert(xhr.responseText)
            }   
        }
        xhr.send(data)
    })
});
</script>    
</head>
<body>
<input id="file-select" type="file" name="file"/>
</body>
</html>

У меня в ответе на var_dump($_FILES); Array(0)

laimas 06.01.2017 14:04

Под каким браузером проверяется?

imedia 06.01.2017 20:41

Mozila

laimas 07.01.2017 06:00

Если ваша лиса не времен начала создания вселенной, то к нему претензий нет. Открывайте отладчик и проверяйте сеть - POST запрос будет содержать типа такого:

-----------------------------133552468125984
Content-Disposition: form-data; name="file"; filename="С1-65.jpg"
Content-Type: image/jpeg

ÿØÿá´àExif��MM�*�����������’�������ª�����
и т.д.


Соответственно сервер вернет информацию о загрузке. Если клиент отдает, а сервер не принимает, значит причину нужно искать на сервере: а) ошибки в коде; б) настройки сервера.

Обучение и отладку нужно производить не на удаленном сервере, а на локальном. На удаленный сервер выставляются уже готовые и отлаженные скрипты.

imedia 07.01.2017 19:26

laimas,
Скажите неужели может быть отключен массив файл на сервере и как включить, ПОСТ в лисе есть

laimas 08.01.2017 04:45

$_FILES - это, и никоим образом ее нельзя отключить.

Загрузкой файлов на сервер управляют соответствующие установки php.ini. Коли вы говорили, что читали о загрузке файлов на сервер, то должны знать это, ибо там рассказывается о директивах, которые влияют на загрузку файлов.

Скачивайте с официального сайта руководство в формате СНМ, с примерами, и изучайте, это самый короткий, но самый лучший учебник по языку, бестселлер на ночь.


Часовой пояс GMT +3, время: 17:57.