无法在php上显示上传文件

时间:2014-06-01 20:04:56

标签: php ajax

更新:好的,谢谢你的帮助,我设法用一个简单的表格来显示图片(视频将在稍后出现),但我仍然坚持使用ajax ...就在下面是我的编码尝试使用ajax(由于某种原因它不会读取回声),而在远端是我更简单的编码形式。

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:我清除标签,抱歉我的缩进有问题,但它仍然无法正常工作。

1 个答案:

答案 0 :(得分:0)

从哪里开始?

  • 您没有</script>代码。
  • 您有3个</body>个标签。删除前2个,只留下最后一个。
  • 和2个</html>标签。删除前1个,只留下最后一个。
  • 网络服务器将文件存储在$_FILES["file"]["tmp_name"],而不是$_FILES['file']['name']。 (最后一个是原始文件名,因为它已在浏览器中上传。
  • 您需要将临时文件移动到您选择的必须为Web服务器写入的位置,因为上传请求完成后将删除临时文件。
  • $ path中已有$ name,但是你再次使用$ name回显$ path。虽然你不应该回应他们中的任何一个。您应该回显将临时文件移动到的路径和文件名。