[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как загрузить файл без кнопки submit
Страницы: 1, 2, 3
AllesKlar
Иван444
jQuery-File-Upload
  • Google Chrome
  • Apple Safari 4.0+
  • Mozilla Firefox 3.0+
  • Opera 11.0+
  • Microsoft Internet Explorer 6.0+

и куча ответов на типичные вопросы по этому плагину http://stackoverflow.com/questions/tagged/...ery+file-upload

_____________
[продано копирайтерам]
Иван444
Цитата (killer8080 @ 25.04.2014 - 10:37)
Цитата (Иван444 @ 25.04.2014 - 04:32)
а есть что нибудь для чайников? я вообще просто там ничего не могу понять, там никаких объяснений, никаких подробностей и вообще непонятно что там и как.

там вроде и так все просто)))
Цитата (Иван444 @ 25.04.2014 - 04:32)
Там даже в примере кнопки нет,

там загрузка автоматом после выбора файла. Если нужно именно с кнопкой, все элементарно переделывается
index.html
Свернутый текст
<pre class="sh_sourceCode" rel="js"><span class="sh_symbol"><!</span>DOCTYPE html<span class="sh_symbol">>
<</span>html<span class="sh_symbol">>
<</span>head<span class="sh_symbol">>
<</span>meta charset<span class="sh_symbol">=</span><span class="sh_string">"utf-8"</span> <span class="sh_symbol">/>
<</span>meta http<span class="sh_symbol">-</span>equiv<span class="sh_symbol">=</span><span class="sh_string">"X-UA-Compatible"</span> content<span class="sh_symbol">=</span><span class="sh_string">"IE=Edge,chrome=1"</span> <span class="sh_symbol">/>
<</span><span class="sh_method">title</span><span class="sh_symbol">></span>xhr<span class="sh_symbol">.</span>send<span class="sh_symbol">(</span>FormData<span class="sh_symbol">)</span> Example<span class="sh_symbol"></</span><span class="sh_method">title</span><span class="sh_symbol">>
</</span>head<span class="sh_symbol">>
<</span>body<span class="sh_symbol">>
<</span>p<span class="sh_symbol">>
<</span>progress <span class="sh_object">max</span><span class="sh_symbol">=</span><span class="sh_string">"100"</span> <span class="sh_method">value</span><span class="sh_symbol">=</span><span class="sh_string">"0"</span> style<span class="sh_symbol">=</span><span class="sh_string">"display: none;"</span><span class="sh_symbol">></</span>progress<span class="sh_symbol">>
</</span>p<span class="sh_symbol">>
<</span><span class="sh_object">form</span> <span class="sh_method">method</span><span class="sh_symbol">=</span><span class="sh_string">"post"</span> <span class="sh_method">action</span><span class="sh_symbol">=</span><span class="sh_string">""</span> enctype<span class="sh_symbol">=</span><span class="sh_string">"multipart/form-data"</span> id<span class="sh_symbol">=</span><span class="sh_string">"myform"</span><span class="sh_symbol">>
<</span><span class="sh_method">input type</span><span class="sh_symbol">=</span><span class="sh_string">"text"</span> <span class="sh_method">name</span><span class="sh_symbol">=</span><span class="sh_string">"user"</span> <span class="sh_symbol">/>
<</span><span class="sh_method">input type</span><span class="sh_symbol">=</span><span class="sh_string">"file"</span> id<span class="sh_symbol">=</span><span class="sh_escape_alt">'ff'</span> <span class="sh_method">name</span><span class="sh_symbol">=</span><span class="sh_string">"pic"</span> <span class="sh_regexp">/><br /</span><span class="sh_symbol">>
<</span><span class="sh_method">input type</span><span class="sh_symbol">=</span><span class="sh_string">"button"</span> onclick<span class="sh_symbol">=</span><span class="sh_string">"upload()"</span> <span class="sh_method">value</span><span class="sh_symbol">=</span><span class="sh_string">"тыц"</span> <span class="sh_symbol">/>

</</span><span class="sh_object">form</span><span class="sh_symbol">>
<</span>div id<span class="sh_symbol">=</span><span class="sh_string">"resp"</span><span class="sh_symbol">></</span>div<span class="sh_symbol">>
<</span>script<span class="sh_symbol">></span>
<span class="sh_keyword">function</span> upload<span class="sh_symbol">()</span> <span class="sh_cbracket">{</span>
<span class="sh_keyword">var</span> progress <span class="sh_symbol">=</span> <span class="sh_object">document</span><span class="sh_symbol">.</span>querySelector<span class="sh_symbol">(</span><span class="sh_escape_alt">'progress'</span><span class="sh_symbol">);</span>
<span class="sh_keyword">var</span> fd <span class="sh_symbol">=</span> <span class="sh_keyword">new</span> FormData<span class="sh_symbol">(</span><span class="sh_object">document</span><span class="sh_symbol">.</span>getElementById<span class="sh_symbol">(</span><span class="sh_escape_alt">'myform'</span><span class="sh_symbol">));</span>
<span class="sh_keyword">var</span> xhr <span class="sh_symbol">=</span> <span class="sh_keyword">new</span> XMLHttpRequest<span class="sh_symbol">();</span>
xhr<span class="sh_symbol">.</span><span class="sh_method">open</span><span class="sh_symbol">(</span><span class="sh_escape_alt">'POST'</span><span class="sh_symbol">,</span> <span class="sh_escape_alt">'handle_file_upload.php'</span><span class="sh_symbol">,</span> <span class="sh_keyword">true</span><span class="sh_symbol">);</span>

xhr<span class="sh_symbol">.</span>upload<span class="sh_symbol">.</span>onprogress <span class="sh_symbol">=</span> <span class="sh_keyword">function</span><span class="sh_symbol">(</span>e<span class="sh_symbol">)</span> <span class="sh_cbracket">{</span>
<span class="sh_keyword">if</span> <span class="sh_symbol">(</span>e<span class="sh_symbol">.</span>lengthComputable<span class="sh_symbol">)</span> <span class="sh_cbracket">{</span>
progress<span class="sh_symbol">.</span><span class="sh_method">value</span> <span class="sh_symbol">= (</span>e<span class="sh_symbol">.</span><span class="sh_normal">loaded</span> <span class="sh_symbol">/</span> e<span class="sh_symbol">.</span>total<span class="sh_symbol">) *</span> <span class="sh_number">100</span><span class="sh_symbol">;</span>
<span class="sh_cbracket">}
}</span><span class="sh_symbol">;</span>

xhr<span class="sh_symbol">.</span>onload <span class="sh_symbol">=</span> <span class="sh_keyword">function</span><span class="sh_symbol">()</span> <span class="sh_cbracket">{</span>
<span class="sh_keyword">if</span> <span class="sh_symbol">(</span><span class="sh_keyword">this</span><span class="sh_symbol">.</span><span class="sh_method">status</span> <span class="sh_symbol">==</span> <span class="sh_number">200</span><span class="sh_symbol">)</span> <span class="sh_cbracket">{</span>
<span class="sh_keyword">var</span> resp <span class="sh_symbol">=</span> JSON<span class="sh_symbol">.</span><span class="sh_method">parse</span><span class="sh_symbol">(</span><span class="sh_keyword">this</span><span class="sh_symbol">.</span>response<span class="sh_symbol">);</span>


<span class="sh_object">document</span><span class="sh_symbol">.</span>querySelector<span class="sh_symbol">(</span><span class="sh_escape_alt">'#resp'</span><span class="sh_symbol">).</span>innerHTML <span class="sh_symbol">=</span> <span class="sh_escape_alt">'<pre>'</span><span class="sh_symbol">+</span>resp<span class="sh_symbol">.</span>POST<span class="sh_symbol">+</span><span class="sh_escape_alt">'</pre><pre>'</span><span class="sh_symbol">+</span>resp<span class="sh_symbol">.</span>FILES<span class="sh_symbol">+</span><span class="sh_escape_alt">'</pre>'</span><span class="sh_symbol">;</span>
<span class="sh_method">setTimeout</span><span class="sh_symbol">(</span><span class="sh_keyword">function</span><span class="sh_symbol">()</span><span class="sh_cbracket">{</span>progress<span class="sh_symbol">.</span>style<span class="sh_symbol">.</span>display <span class="sh_symbol">=</span> <span class="sh_escape_alt">'none'</span><span class="sh_symbol">;</span><span class="sh_cbracket">}</span><span class="sh_symbol">,</span> <span class="sh_number">500</span><span class="sh_symbol">)</span>
<span class="sh_cbracket">}</span><span class="sh_symbol">;</span>
<span class="sh_cbracket">}</span><span class="sh_symbol">;</span>
progress<span class="sh_symbol">.</span>style<span class="sh_symbol">.</span>display <span class="sh_symbol">=</span> <span class="sh_escape_alt">'block'</span><span class="sh_symbol">;</span>
progress<span class="sh_symbol">.</span><span class="sh_method">value</span> <span class="sh_symbol">=</span> <span class="sh_number">0</span><span class="sh_symbol">;</span>
xhr<span class="sh_symbol">.</span>send<span class="sh_symbol">(</span>fd<span class="sh_symbol">);</span>

<span class="sh_cbracket">}</span>

<span class="sh_symbol"></</span>script<span class="sh_symbol">>

</</span>body<span class="sh_symbol">>
</</span>html<span class="sh_symbol">></span></pre>

handle_file_upload.php
Свернутый текст
<pre class="sh_sourceCode" rel="php"><span class="sh_keyword"><?php</span>

<span class="sh_variable">$json</span> <span class="sh_symbol">=</span> <span class="sh_function">json_encode</span><span class="sh_symbol">(</span><span class="sh_function">array</span><span class="sh_symbol">(</span>
<span class="sh_string">'POST'</span> <span class="sh_symbol">=></span> <span class="sh_function">print_r</span><span class="sh_symbol">(</span><span class="sh_variable">$_POST</span><span class="sh_symbol">,</span> <span class="sh_number">1</span><span class="sh_symbol">),</span>
<span class="sh_string">'FILES'</span> <span class="sh_symbol">=></span> <span class="sh_function">print_r</span><span class="sh_symbol">(</span><span class="sh_variable">$_FILES</span><span class="sh_symbol">,</span> <span class="sh_number">1</span><span class="sh_symbol">)
));</span>

<span class="sh_function">echo</span> <span class="sh_variable">$json</span><span class="sh_symbol">;</span></pre>

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

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

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





<!DOCTYPE html>
<
html>
<
head>
<
meta charset="utf-8" />
<
meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" />
<
title>xhr.send(FormData) Example</title>
</
head>
<
body>
<
p>
<
progress max="100" value="0" style="display: none;"></progress> // эта строка в которой будет отображаться процентность загрузки
</p>
<
form method="post" action="" enctype="multipart/form-data" id="myform">
<
input type="text" name="user" />
<
input type="file" id='ff' name="pic" /><br />
<
input type="button" onclick="upload()" value="тыц" />

</
form>
<
div id="resp"></div>
<
script>
function upload() {
var progress = document.querySelector('progress'); // сюда попадает вот этот элемент насколько я понимаю <progress ></progress>
var fd = new FormData(document.getElementById('myform')); // сюда попадает все чем заполнена форма
var xhr = new XMLHttpRequest(); //вот эта штука нужна чтобы подготовить все данные к отправке
xhr.open('POST', 'handle_file_upload.php', true); // здесь мы указываем метод отправки, файл обработчик данных и что то связанное с синхронностью и асинхронностью отправки всех этих данных

xhr.upload.onprogress = function(e) { //вот эта штука не знаю, что означает, но так понимаю, что это каким то образом работает когда файл грузится и полоса загрузки идет
if (e.lengthComputable) {
progress.value = (e.loaded / e.total) * 100;
}
}
;

xhr.onload = function() { // это заработает когда вся страница загрузится
if (this.status == 200) { // если страница загрузилась без ошибок(наверное) то что то делается ниже я не знаю что
var resp = JSON.parse(this.response); // выводил тут алертом, написано какой то объект тоже не знаю что это, вот это вот искал this.response и не нашел что означает (((


document.querySelector('#resp').innerHTML = '<pre>'+resp.POST+'</pre><pre>'+resp.FILES+'</pre>'; // голова уже болит, я понимаю что тут выбирается объект с ид ('#resp') и в нем выводятся два массива с данными, но я не могу найти элемент с таким ид #resp (((


setTimeout(function(){progress.style.display = 'none';}, 500) // здесь скрывается вот этот блок <progress ></progress>
};
};
progress.style.display = 'block'; // это не знаю для чего
progress.value = 0; // это не знаю для чего
xhr.send(fd); // это отправляет все данные формы в обработчик
}

</script>

</
body>
</
html>




щас умру уже :(
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.