2010-08-20 3 views
0

У меня проблема с файлом uplaoding, вот мои коды: Любая помощь? Благодаря!PHP AJAX ЗАГРУЗИТЬ?

test.html

function insertPhoto() 
{ 
    var description = document.getElementById('description').value; 
    var image = document.getElementById('photo').value; 
     var url = "ajax_insert.php?action=add&image="+image+"&description="+description; 
    var ajaxRequest = ajax_obj(); 

      ajaxRequest.onreadystatechange = function() { 
         if(ajaxRequest.readyState == 4){ 

       document.getElementById("msgbox").innerHTML=ajaxRequest.responseText; 

      }    
     } 

     ajaxRequest.open("GET", url, true); 
      ajaxRequest.send(null); 

     return false; 
} 

<div align="center"> 
    <div class="top" > 
    <div> 
     Decription <input name="description" type="text" id="description" value="" maxlength="20" /> 
    </div> 
    <div style="margin-top:5px" > 
Image 
     <input name="photo" type="file" id="photo" value="" maxlength="20" /> 
    </div> 
    <div class="buttondiv"> 
     <input name="button" type="button" value="Upload" onclick="return insertPhoto()" style="margin-left:-10px; height:23px" /> 
     <span id="msgbox" style="display:none"></span> 
    </div> 
    </div> 
</div> 

ajax_insert.php

<?php 
    mysql_connect('localhost','root',''); 
    mysql_select_db('priceless'); 
    define('DIR_IMAGE','images/'); 

    $image = $_GET['image']; 
    $description = $_GET['description']; 
    $dbtable = 'photos'; 
    $action = $_GET['action']; 

    if($action == 'add'){ 
      $photo = ''; 
       if ($_FILES[$image]['name']) { 
        $aray = explode(".",$_FILES[$image]['name']); 
        $ext = $aray[count($aray)-1]; 
        $photo = date('Ymdhis').'.'.$ext; 
        move_uploaded_file($_FILES[$image]['tmp_name'],DIR_IMAGE.$photo); 
       } 

       $data = array(
       'image'=> $photo, 
       'description'=> $description 
       ); 
       $values = array(); 
       foreach($data as $show){ 
        $values[] = $show; 
       }   
       $query = "INSERT INTO ".$dbtable." (`".implode("`,`",array_keys($data))."`) values ('".implode("','",array_values($values))."')"; 
       if ($result= mysql_query($query) or die(mysql_error())) {   
       echo "You have Sucessfully Upload Photo!";    
      } 
    } 
?> 
+0

Не могли бы вы исправить ваш вопрос для кодов стать разборчивым? – leafnode

ответ

0

Вы не можете загружать файлы с помощью чистого AJAX, потому что вы не можете получить доступ содержимое файла программно.

Вам нужно будет использовать другую технику, например. представляя форму обычным способом в скрытый элемент iframe. Так поступает jQuery form plugin.

+0

С HTML 5 вы можете преобразовать изображение в URL-адрес данных, а затем опубликовать его через AJAX. –

+0

@ Steve-o да, но не любой произвольный файл с жесткого диска. –

0

Если вы хотите, чтобы некоторые AJAXy загрузки, посмотрите на Uploadify - http://www.uploadify.com/

Он может обрабатывать загрузки нескольких сразу, и имеет индикатор в режиме реального времени. Затем он имеет параметры JS, позволяющие обрабатывать загрузку и т. Д.

Если вам нужен полный учебник, дайте мне крик, и я покажу вам несколько примеров!

Надеюсь, это поможет.

0

Из-за проблем с безопасностью многие браузеры не позволяют передавать данные из поля выбора файла через javascript/ajax. Лучше использовать страницу, которая вызывает себя, с обычной кнопкой отправки. (Я пробовал загрузку AJAX на моем собственном веб-сайте, так что поверьте мне).

Try -

<?php 
if ($_FILE['file'] != ''){ 
$dest = 'folder/'; 
    list($name, $ext) = explode('.', $_FILES['file']['name']); 

    if(is_uploaded_file($_FILES['file']['tmp_name'])){ 
    @move_uploaded_file($_FILES['file']['tmp_name'], $dest.$name.'.'.$ext); 
    }; 
}; 
?> 
1

Вы не можете загружать файлы с использованием чистого AJAX, потому что вы не можете получить доступ к содержимому файла программно из-за проблем с безопасностью.

Вы можете использовать iframe и указать его как цель формы загрузки.

Вы можете увидеть пример этого здесь: http://www.ajaxf1.com/tutorial/ajax-file-upload-tutorial.html

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