2013-12-18 29 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