【发布时间】:2021-10-21 12:32:29
【问题描述】:
我在使用 javascript 上传文件的网站上找到了此代码,但它似乎不起作用。有人可以帮我吗?
索引.php:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
<link href="style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div class="container">
<div class="row">
<div id="uploads"></div>
<div class="dropzone" id="dropzone">
Drop files fere to upload
</div>
</div>
</div>
<script src="js_script.js" type="text/javascript"></script>
</body>
</html>
还有js:
(function() {
var dropzone = document.getElementById('dropzone');
var displayUploads = function(data) {
var uploads = document.getElementById('uploads'),
anchor,
x;
for (x = 0; x < data.length; x = x + 1) {
anchor = document.createElement('a');
anchor.href = data[x].file;
anchor.innerText = data[x].name;
uploads.appendChild(anchor);
}
};
var upload = function(files) {
var formData = new FormData(),
xhr = new XMLHttpRequest(),
x;
for (x = 0; x < files.length; x = x + 1) {
formData.append('file[]', files[x]);
}
xhr.onload = function() {
var data = JSON.parse(this.responseText);
displayUploads(data);
};
xhr.open('post', 'upload.php');
xhr.send(formData);
};
dropzone.ondrop = function(e) {
e.preventDefault();
this.className = 'dropzone';
upload(e.dataTransfer.files);
};
dropzone.ondragover = function() {
this.className = 'dropzone dragover';
return false;
};
dropzone.ondragleave = function() {
this.className = 'dropzone';
return false;
};
}());
和上传.php:
<?php
header("Content-Type: application/json");
$uploaded = array();
if(!empty($_FILES['file']['name'][0])){
foreach($_FILES['file']['name'] as $position => $name){
if(move_uploaded_file($_FILES['file']['tmp_name'][$position], 'uploads/'.$name)){
$uploaded[] = array(
'name' => $name,
'file' => 'uploads/'.$name
);
}
}
}
echo json_encode($uploaded);
?>
现在这个问题:
GET .../upload.php 404(未找到)
及相关代码发布:
xhr.send(formData);
顺便说一句,控制台中显示的“GET”是什么??
【问题讨论】:
-
找不到你发送请求的URL(porting?action=order)
-
^^^ 您似乎没有显示导致问题的代码,因为 Teemu 指出的 URL 不在显示的代码中。
-
非常感谢您的帮助,但我的问题出了点问题,我编辑了我的帖子,很抱歉。是的,Teemu,当我更新我的问题时,我发现找不到 upload.php 文件,但这是为什么呢? upload.php 正好在其他文件旁边。我不敢相信我尝试了 8 种不同的方法来设置文件上传,但每种方法都有常见但无法解决的问题......
-
请修剪您的代码,以便更容易找到您的问题。请按照以下指南创建minimal reproducible example。
标签: javascript ajax xmlhttprequest