2010-08-20 32 views
0

我有問題uplaoding文件, 這裏是我的代碼: 任何幫助嗎?謝謝!PHP AJAX UPLOAD?

的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 2010-08-20 08:33:27

回答

0

您不能上傳使用純AJAX文件,因爲你不能以編程方式訪問該文件的內容。

你將不得不使用不同的技術,例如,以正常方式將表格提交到隱藏的iframe元素。這就是jQuery form plugin這樣做的方式。

+0

使用HTML 5,您可以將圖像轉換爲數據網址,然後通過AJAX發佈。 – 2010-08-20 08:33:51

+0

@ Steve-o是的,但沒有任何來自硬盤的任意文件。 – 2010-08-20 08:38:14

0

如果你想要一些AJAXy上傳,看看Uploadify - http://www.uploadify.com/

它可以同時處理多個上傳,並具有實時進度條。然後它有JS參數,讓你可以處理上傳等。

如果你需要一個完整的教程給我一個喊,我會告訴你一些例子!

希望這會有所幫助。

0

由於安全問題,許多瀏覽器不允許您通過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); 
    }; 
}; 
?>