PHP AJAX ЗАГРУЗИТЬ? - PullRequest
       4

PHP AJAX ЗАГРУЗИТЬ?

0 голосов
/ 20 августа 2010

У меня проблема с загрузкой файла, вот мои коды: Любая помощь?Спасибо!

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!";              
            }
    }
?>

Ответы [ 5 ]

1 голос
/ 23 августа 2010

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

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

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

1 голос
/ 23 августа 2010

Лично я использую эту загрузку Ajax http://valums.com/ajax-upload/, и я доволен результатами.

0 голосов
/ 20 августа 2010

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

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

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

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

0 голосов
/ 21 августа 2010

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

Попробуйте -

<?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);
    };
};
?>
0 голосов
/ 20 августа 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...