2012-04-10 4 views
1

Я просмотрел весь стек и общий интернет, и я не могу найти простой загрузчик файлов AJAX (просто отправьте форму). Те, которые я нашел, недостаточно гибки и не соответствуют моей цели. Если я мог изправлена ​​этот скрипт для загрузки файлов, что было бы здорово:Загрузка файла PHP 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)'> 

Благодарности

ответ

7

Вот простой файл Аякса uploader

Uploadify

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

AxUploader

+0

Спасибо, я просто использовал AxUploader. То точно, что я искал –

0

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

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

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

+0

Привет, проблема в том, что мне нужно иметь одну кнопку загрузки, и как только кто-то щелкнул, загрузил файл, который он автоматически загружает. За один раз будет загружен только один файл. –

0
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 ини переменной, вы получите его с помощью эхо phpinfo();

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

Смежные вопросы