请帮助。我正在尝试使用php和javascript创建拖放文件上传器,但是当我单击上传文件时,php文件显示以下错误: 此页面无法正常运行localhost当前无法处理此请求。 HTTP错误500
这是我的html的正文。
<body>
<div class="wrapper">
<div class="upload-console">
<h2 class="upload-console-header">Upload</h2>
<div class="upload-console-body">
<h3>Select files from your computer</h3>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="files[]" id="standard-upload-files" multiple>
<input type="submit" value="Upload files" id="standard-upload">
</form>
<h3>Or drag and drop files below</h3>
<div class="upload-console-drop" id="drop-zone">
Just drag and drop files here
</div>
<div class="bar">
<div class="bar-fill" id="bar-fill">
<div class="bar-fill-text" id="bar-fill-text"></div>
</div>
</div>
<div id="uploads-finished" class="hidden">
<h3>Processed files</h3>
</div>
</div>
</div>
</div>
<script src="js/upload.js"></script>
<script src="js/global.js"></script>
</body>
这是我的upload.php文件。
<?php
header('Content-Type: application/json');
$allowed = ['mp4','png','jpg'];
$processed = [];
foreach($_FILES['files']['name'] as $key => $name) {
if($_FILES['files']['error'][$key] === 0) {
$temp = $_FILES['files']['tmp_name'][$key];
$ext = explode('.',$name);
$ext = strtolower(end($ext));
$file = uniqid('',true) . time() . '.' . $ext;
if(in_array($ext, $allowed) && move_uploaded_file($temp, 'uploads/' . $file)) {
$processed[] = array(
'name' => $name,
'file' => $file,
'uploaded' => true
);
} else {
$processed[] = array(
'name' => $name,
'uploaded' => false
);
}
}
}
echo json_encoded($processed);
?>
这是运行树命令的结果
.
├── css
│ └── global.css
├── index.html
├── js
│ ├── global.js
│ └── upload.js
├── phpinfo.php
├── upload.php
└── uploads
├── 5cc57ea6322ba7.448603261556446886.jpg
├── 5cc58390d82095.937935921556448144.jpg
├── 5cc583f48b4a81.475000611556448244.jpg
├── 5cc596bb0b2980.525819171556453051.jpg
├── 5cc5ca069f34e8.919505521556466182.jpg
└── 5cc5ccc7525ad4.537311361556466887.jpg
图像似乎正在上传,但是出现500错误页面。 我正在尝试使其获得进度条以显示进度,并更改隐藏的类以显示下载的文件。但是它重定向到uploads.php,错误为500。谢谢。
在here上都可以在codepen上看到所有的html和js。
答案 0 :(得分:0)
您的表单将重定向到其中的“操作”,在您的情况下为upload.php-如果要停止重定向,则需要添加php重定向:
header("Location: mypage.php");
,以便返回上一页。
如果页面是动态的,并且您不知道mypage.php
是什么,请在表单中添加隐藏的输入,然后使用页面名称作为此值。
编辑:抱歉,这仍然不能解决您的问题-上面的重定向将用于执行脚本时。
500错误是由于代码中的错误所致。此错误(如@Chris White在您的评论中提到的)
是echo json_encoded($processed);
这应该是
echo json_encode($processed);
答案 1 :(得分:0)
用json_encode替换json_encoded 编辑:刚意识到有人已经回答了..我的建议是使用某种IDE,我在不到一秒钟的时间内发现了它。 IDE高亮语法错误