Загрузка файла PHP AJAX

я просмотрел весь стек stackoverflow и общий интернет, и я не могу найти простой загрузчик файлов AJAX (только форма представления). Те, которые я нашел, недостаточно гибки и не соответствуют моей цели. Если бы я мог использовать этот сценарий для загрузки файлов, это было бы здорово:

<script type="text/javascript"> function upload(str) { if (str.length==0) { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("hint").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","ajax/link.php?q="+str,true); xmlhttp.send(); } 

В HTML я бы

 <input type='file' onblur='upload(this.value)'> 

благодаря

Вот простой загрузчик файлов ajax

Uploadify

И если вам не нужна вспышка, вы можете использовать ее;

AxUploader

Это не так просто. Вы не можете напрямую использовать ajax для загрузки файлов. Подумайте о проблемах безопасности, которые могут возникнуть? Что делать, если я помещаю «/%USER%/Desktop/CreditCardsAndPasswords.txt» в поле str? Короче говоря, вам нужно найти и использовать те «негибкие» загрузчики, о которых вы говорили, и им придется отредактировать их в соответствии с вашими потребностями. Либо это, либо напишите сами, чтобы соответствовать вашей цели.

Способ работы большинства пользователей «ajax» заключается в том, что они динамически создают элементы входного файла Html и представляют подмножество вашей формы (только элемент файла) в php-скрипт на вашем веб-сайте, а затем сохраняют файл в любом временном каталоге. Затем, когда вы отправляете остальную часть формы, вы можете «догнать» остальную часть скрипта и обрабатывать любую обработку с загруженными файлами.

Там много много айаксских «загрузчиков». Просто выполните поиск и найдите его, я не могу поверить, что все из них недостаточно хороши.

 var data = new FormData(); data.append("image_upload",jQuery("#file_upload_input")[0].files[0]); jQuery.ajax({ url: 'url', type: 'POST', data: data, cache: false, processData: false, // Don't process the files contentType: false, // Set content type to false as jQuery will tell the server its a query string request success: function(data, textStatus, jqXHR) { console.log(data, textStatus, jqXHR); }, error: function(jqXHR, textStatus, errorThrown) { console.log(jqXHR, textStatus, errorThrown); } }); 

Также проверьте переменную post_max_size ini, вы получите ее с помощью echo phpinfo ();

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