опубликовать данные как ...? - PullRequest
1 голос
/ 17 ноября 2011

Я даже не уверен, возможно ли это ...

Учитывая форму с <input id="fileinput" type="file" /> и допустимый выбранный файл, могу ли я ПОСТАВИТЬ value, используя document.getElementById("fileinput").value в XMLHttpRequest объект и ожидаете, что $_FILES будет держать объектЕсли можно ожидать, что POST пройдет, как я могу получить информацию о файле?

Follow Up

Можно ли тогда использовать стандарт XMLHttpRequestОбъект с FileReader для загрузки файла?Или это совсем другая банка с рыбой?Я пытаюсь свести к минимуму посторонний код, не повторяю глупых вопросов.

Редактировать - Закрытие

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

По существу, use XMLHttpRequest().upload для отправки File.Полностью асинхронный;но не радость в IE или Opera, и в этом случае я могу вернуться к стандартной синхронной форме или к фальшивке iframe.

Во всяком случае, так как, очевидно, это не может быть сделано, я думаю, что это сделаетотличный кусок открытого исходного кода для публикации.Спасибо всем.

Ответы [ 4 ]

1 голос
/ 17 ноября 2011

Вы можете в HTML5: http://jsfiddle.net/Cjs4G/.

document.getElementById("upload").onchange = function(e) { // on file select
    var fr = new FileReader; // reads files

    fr.onloadend = function() {             // when done reading
        alert(fr.result.substring(0, 100)); // alert first part of data
        // or send `fr.result` through AJAX
    };

    fr.readAsBinaryString(e.target.files[0]); // start reading
};
1 голос
/ 17 ноября 2011

Нет, JavaScript не имеет доступа к файлам в поле file input.

Большинство обходных путей включают загрузчик Flash некоторого вида, например SWFUpload.Есть некоторые интересные HTML5 вещи, но вы потеряете 50% Интернета, которые являются пользователями IE.

0 голосов
/ 17 ноября 2011

NOPE.

Вы НЕ МОЖЕТЕ публиковать файлы ajaxly.

посмотрите на этот вопрос о способах его подделки.

Как подделать загрузку файла ajax?

или этот: Как я могу загружать файлы асинхронно?

0 голосов
/ 17 ноября 2011

попробуйте загрузить файл valums

Я просто внедрил его, как неделю назад, для загрузки изображений ajax

https://github.com/valums/file-uploader

...