Javascript POST未使用AJAX接收formData
我在向PHP脚本发送FormData时遇到问题,当PHP脚本收到POST时,它会收到空的$u文件 HTML: PHP:Javascript POST未使用AJAX接收formData,javascript,php,html,ajax,post,Javascript,Php,Html,Ajax,Post,我在向PHP脚本发送FormData时遇到问题,当PHP脚本收到POST时,它会收到空的$u文件 HTML: PHP: if($\u POST){ 如果($_文件[“fileToUpload”][“name”]!=“”) { $test=explode(“.”,$_文件[“fileToUpload”][“name”]); $ext=结束($test); $name=$_文件[“fileToUpload”][“name”]; $location='../../VideoDropPoint/'.$n
if($\u POST){
如果($_文件[“fileToUpload”][“name”]!=“”)
{
$test=explode(“.”,$_文件[“fileToUpload”][“name”]);
$ext=结束($test);
$name=$_文件[“fileToUpload”][“name”];
$location='../../VideoDropPoint/'.$name;
如果(文件_存在($location)){}
如果(移动上传的文件($文件[“fileToUpload”][“name”],$location)){
呼应“成功”;
}否则{
回声“错误”;
}
回声';
}否则{
回显“无数据接收错误”;
}
}
PHP通过了if($\u POST),但发现if($\u文件[“fileToUpload”][“name”]!=”)为false。更改JS代码,如下所示:
<script>
document.querySelector('#fileToUpload').addEventListener('change', function(e) {
var file = this.files[0];
var fd = new FormData();
fd.append("fileToUpload", file);
fd.append("param", "test");
var xhr = new XMLHttpRequest();
xhr.open('POST', 'test.php', true);
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
var percentComplete = (e.loaded / e.total) * 100;
console.log(percentComplete + '% uploaded');
}
};
xhr.onload = function() {
if (this.status == 200) {
var resp = JSON.parse(this.response);
console.log('Server got:', resp);
var image = document.createElement('img');
image.src = resp.dataUrl;
document.body.appendChild(image);
};
};
xhr.send(fd);
}, false);
</script>
内容类型
标头需要包含多部分请求所使用的边界值,但您发送的是一个不包含边界值的值。尝试完全删除这一行,AFAIK浏览器根据所使用的XMLHttpRequest和FormData的组合在内部自行处理这一行。不,仍然不工作,请注释掉setRequestHeader。如果您只是尝试自行序列化文件输入字段,则不确定这是否应该完全独立工作。在这里尝试这种方法,通过FormData将整个表单序列化,-并确保表单设置了正确的enctype,它仍然为空。
const xhr = new XMLHttpRequest();
const videoForm = document.querySelector('#videoForm');
let fileToUpload = videoForm['fileToUpload'].files[0];
var formdata = new FormData();
formdata.append("fileToUpload", fileToUpload);
xhr.onload = function () {
let serverResponse = this.responseText;
console.log(serverResponse);
if(serverResponse === "SUCCESS"){
//GatherDBData();
}else{
alert("Error file was NOT uploaded, check file type");
}
};
xhr.open("POST", "upload.php");
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
xhr.send(formdata);
if($_POST){
if($_FILES["fileToUpload"]["name"] != '')
{
$test = explode('.', $_FILES["fileToUpload"]["name"]);
$ext = end($test);
$name = $_FILES["fileToUpload"]["name"];
$location = '../../VideoDropPoint/' . $name;
if (file_exists($location)) {}
if(move_uploaded_file($_FILES["fileToUpload"]["name"], $location)){
echo "SUCCESS";
}else{
echo "ERROR";
}
echo '<img src="'.$location.'" height="150" width="225" class="img-thumbnail" />';
}else{
echo "ERROR no data received";
}
}
<script>
document.querySelector('#fileToUpload').addEventListener('change', function(e) {
var file = this.files[0];
var fd = new FormData();
fd.append("fileToUpload", file);
fd.append("param", "test");
var xhr = new XMLHttpRequest();
xhr.open('POST', 'test.php', true);
xhr.upload.onprogress = function(e) {
if (e.lengthComputable) {
var percentComplete = (e.loaded / e.total) * 100;
console.log(percentComplete + '% uploaded');
}
};
xhr.onload = function() {
if (this.status == 200) {
var resp = JSON.parse(this.response);
console.log('Server got:', resp);
var image = document.createElement('img');
image.src = resp.dataUrl;
document.body.appendChild(image);
};
};
xhr.send(fd);
}, false);
</script>
if($_POST){
if($_FILES["fileToUpload"]["name"] != '')
{
$test = explode('.', $_FILES["fileToUpload"]["name"]);
$ext = end($test);
$name = $_FILES["fileToUpload"]["name"];
$location = '../../VideoDropPoint/';
if (file_exists($location)) {
print_r($_FILES["fileToUpload"]);
if(move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $location.$name)){
echo "SUCCESS";
}else{
echo "ERROR";
}
}
echo '<img src="'.$location.$name.'" height="150" width="225" class="img-thumbnail" />';
}else{
echo "ERROR no data received";
}
}