怀疑使用ajax将图像上传到文件数据库

时间:2013-12-18 00:03:36

标签: javascript php jquery html 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请求中“data:”到底应该是什么?什么   我该怎样做才能正确解析文件?

     

2º在PHP图像验证中如何检索扩展名   文件以及我应该如何进行isset($ _ POST)?

     

3º如果我要立即向用户提出图像ajax.success   应该缓存设置为true?缓存如何在这种情况下表现?

2 个答案:

答案 0 :(得分:0)

XHR技术不允许上传图像。

您必须找到一种解决方法,例如使用iframe。

答案 1 :(得分: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]上进行更多工作,以便将状态与主框架进行对话。