关注问题,请
我有以下 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?缓存如何在这种情况下表现?
答案 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]上进行更多工作,以便将状态与主框架进行对话。