如何用PHP接收前端传输过来的文件,formdata这个对象的文件到是什么类型的二进制的数据吗?
前端代码:
<input type="file" name="file" id="file" multiple>
<script type="text/javascript">
var file = document.querySelector("#file");
file.onchange = function(){
var files = this.files;
for(var i=0;i<files.length;i++){
ajax('ajax.php',files[i],function(data){
console.log(data)
console.log('fn')
})
}
}
function ajax(url,data,fn){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if(xhr.readyState==4&&xhr.status==200){
fn(xhr.responseText)
}
}
var formData = new FormData();
formData.append('file',data);
xhr.open('POST',url,true);
//xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send(formData);
}
</script>
php代码:
<?php
if(!empty($_FILES['file'])){
$fileinfo = $_FILES['file'];
$destination = "image/";
$destination = $destination.basename($_FILES['file']['name']);
move_uploaded_file($fileinfo['tmp_name'],$destination);
echo "succ";
}
?>
不知道为什么if(!empty($_FILES['file']))这判断一直false,改用if(!empty($_POST['file']))也是一样;哪位知道后台是如何接收传过来的文件的吗?可不可以给个demo的PHP文件!
我在php中加了3个日志记录:
存储路径改成tmp了,其他没变,得到的结果:
文件成功上传
没有出错……
先来个打印看看啊!先别用
if
判断。直接看看是什么东东。然后在一步一步的来
F12看请求啊
楼主用
$_REQUES
接收试一下吧。打开chrome的控制台看看请求Request发送了什么,主要看请求头的Content-Type和请求体
请问一下,我前台以jquery的FormData提交数据,后台也接不到数据,打印post是这样的
array(1) {
["------WebKitFormBoundarygALiDzl13YUFBzpN
Content-Disposition:_form-data;_name"] => string(334) ""member_id"
3
------WebKitFormBoundarygALiDzl13YUFBzpN
Content-Disposition: form-data; name="token"
VjnAqgvEKKiC=i3SA2vLom=dfqHKm0Ew
------WebKitFormBoundarygALiDzl13YUFBzpN
Content-Disposition: form-data; name="portrait"; filename=""
Content-Type: application/octet-stream
------WebKitFormBoundarygALiDzl13YUFBzpN--
"
}