2013-12-18 61 views
0

焦點圖片上傳到文件數據庫,懷疑在使用上的問題,AJAX

我有以下HTML

<form enctype="multipart/form-data" onsubmit="uploadProfilePicture();" method="post" name="prof_picture"> 
<input id="upload_profile_picture" style="display:none;"name="image" accept="image/jpeg" type="file"> 
<input id="upload_profile_picture2" value="Submit" type="submit" style="display:none;"> 
<a id="change_profile_picture" class="profile_option" onclick="$('#upload_profile_picture').click();">Mudar foto de perfil</a> 

PHP(profileFunctions.php)

if(isset($_POST['prof_picture'])){ 
    alert("test"); 
} 

JS

function uploadProfilePicture(){ 

    $.ajax({ 
      type:'POST', 
      url: "profile/profileFunctions.php", 
      data:$(this).serialize(), 
      cache:false, 
      success:function(data){ 
       console.log("success"); 
       console.log(data); 
      }, 
      error: function(data){ 
       console.log("error"); 
       console.log(data); 
      } 
     }); 

} 

我已經使用AJAX之前,但事情是我其實真的很懷疑,因爲這個文件的是圖像:

1º究竟應該在「數據:」什麼內ajax請求?我應該怎樣做才能正確解析文件?

2º在PHP圖像驗證中,如何檢索 文件的擴展名以及我應該如何執行isset($ _ POST)?

3º如果我要向用戶即時提出圖像,如果ajax.success 應將緩存設置爲true?緩存如何處理這種情況?

+0

你有沒有考慮過使用像uploadify這樣的插件? http://www.uploadify.com/ –

+0

我不建議將圖像數據放入數據庫。我建議將其保存到文件系統並將其位置存儲到數據庫中。 –

+0

@JustinWood我從來沒有說過我會:) – user111671

回答

0

XHR技術不允許上傳圖像。

你必須找到解決方法,就像使用iframe一樣。

+0

你確定嗎?據我所知,xD – user111671

+0

@ user111671。類似的問題問這裏:http://stackoverflow.com/questions/2320069/jquery-ajax-file-upload – Daveel

+0

顯然它是xp – user111671

0

請使用iframe而不是ajax。

<form target="my_iframe_name" action="my_script_can_receive_file.php" ....> 
... 
</form> 
<iframe name="my_iframe_name" onload="javascript:alert('uploaded')" style="width:1px;height:1px;position:absoulte;left:-99999px;top:-99999px" src="javascript:void(0)"></iframe> 

但是,如果你想查詢你上傳的狀態,可能需要在兩個[my_script_can_receive_file.php]和[JS]更多的工作來說話的狀態到主框架。

+0

但是,使用iframe - >如何< - 完全?我一直認爲iframe應該嵌入一些東西,而ajax與服務器實時連接並不正確?那麼爲什麼我會使用iframe? – user111671

+0

AJAX不支持文件傳輸。 iframe是一個適配器,通過使用[form]標籤中的[target]和[action]屬性,您可以將iframe內容發佈到當前幀(主頁面)。然後,您可以使用[iframe]中的[onload]來查找您上傳結果的狀態 – Zac