不能显示在php上上传的文件


Can't show upload filed on php

更新:好的,谢谢你的帮助,我设法使它的工作与一个简单的形式来显示图片(视频将稍后),但我仍然坚持与ajax…下面是我对ajax的编码尝试(由于某种原因,它不能读取echo),而在远端是我的更简单的编码形式。

test.php代码:
<input name="file" id="file" type="file" />
<br /><br />

<script>
var fileInput = document.querySelector('#file')
fileInput.onchange = function() {
var xhr = new XMLHttpRequest();
xhr.open('POST', 'test2.php');
xhr.upload.onprogress = function(e) {
    progress.value = e.loaded;
    progress.max = e.total;
};
xhr.onload = function() {
    var uploadStatus = document.getElementById("finish");
    document.getElementById('finish').innerHTML = 'Upload done !';      
};
var form = new FormData();
form.append('file', fileInput.files[0]);
xhr.send(form);
};
</script>
<p id="finish">
</p>

test2.php代码

$filename = $_FILES['file']['name'];
$targetpath = getcwd() . '/' . $filename;
@move_uploaded_file($_FILES['file']['tmp_name'], $targetpath);
echo '<img src="' . $filename . '" height="100px" width="100px"/>';
?> 

和简单的表单代码:

<!DOCTYPE html>
<html>
<body>
<form method="post" action="test.php" enctype="multipart/form-data">
<input name="file" id="file" type="file" accept="video/*" />
<br /><br />
<input type="submit"/>
</form>
<br/>
<?php 

$filename = $_FILES['file']['name'];
$targetpath = getcwd() . '/' . $filename;
@move_uploaded_file($_FILES['file']['tmp_name'], $targetpath);
echo '<img src="' . $filename . '" height="100px" width="100px"/>';
?> 

ps:我清除了标签,对不起,我有缩进的问题,它仍然不起作用

从哪里开始?

  • 您没有</script>标签
  • 您有3个</body>标签。删除前两个,只留下最后一个
  • 和2个</html>标签。删除第一个1,只留下最后一个
  • web服务器将文件存储在$_FILES["file"]["tmp_name"],而不是$_FILES['file']['name']。(最后一个只是原始文件名,因为它是在浏览器中上传的。
  • 您需要将临时文件移动到您选择的位置,该位置必须为web服务器可写,因为临时文件将在上传请求完成后被删除。
  • $path里面已经有$name了,但是你又用$name回送$path。但你不应该附和他们。您应该回显示您移动临时文件的路径和文件名。