javascript - 拖放多部分/表单数据已发布但无法接收 $_FILES
问题描述
下面的代码经过测试,仅使用 JavaScript 和 PHP 执行拖放操作。我收到了发布的数据,但 FILES 数组为空。
//Import jQuery CDN
<script src="script.js">
</script>
//Just for load body element
<body></body>
<script type="text/javascript">
//create a div area for drag & drop
var dropbox = document.createElement('div');
dropbox.setAttribute('id','dropbox');
dropbox.setAttribute('style','margin-left:300px;margin-top:100px;border: 1px solid;width:760px;height:420px;background-image:url(bg.gif);');
document.body.insertBefore(dropbox,document.body.firstChild);
document.getElementById('dropbox').ondragover = function(event){
event.preventDefault();
};
document.getElementById('dropbox').ondragenter = function(event){
event.preventDefault();
};
document.getElementById('dropbox').ondragleave = function(event){
event.preventDefault();
};
document.getElementById('dropbox').ondrop = function(event){
事件阻止在动作发生之前执行,实际上 ondragover 将与 ondrop 发生冲突,但在这种情况下,我只是逃避其他未执行的事件
event.preventDefault();
var files = event.target.files || event.dataTransfer.files;
var formData = new FormData();
//Receive file(s) as objects
for(var i=0;i<files.length;i++){
//Append to a form
formData.append('file_'+i,files[i]);
}
//Ajax POST to send data
$.ajax({
type : 'POST',
url :'process.php',
cache: false,
processData: false,
data : formData,
success:function(result){
alert(result);
},
failure:function(error){
alert('Failure...!');
}
});
};
</script>
<?php
//Receive POST files
if($_SERVER['REQUEST_METHOD'] == 'POST'){
print_r($_POST); //Data received
print_r($_FILES); //Array is empty
}
?>
解决方案
推荐阅读
- php - 使用参数直接从 PHP 脚本运行可执行文件
- plsql - `LISTAGG` 函数的串联错误[不是重复的问题]
- python - 将速率方程转换为python代码的问题
- ruby-on-rails - Rails 6 中的 WebPack 与资产管道?
- python - 如何在Python中将html标签重组为一行
- assembly - 在 MASM 中使用浮点值并将它们放入变量中
- angular - 如何在显示 Angular 网站之前加载图像
- python - 即使在传递标头后,Python 请求也无法获取站点
- docker - NVIDIA Docker - 初始化错误:nvml 错误:未加载驱动程序
- python - 如何在 Python 中创建 Unicode 字符数组?