【发布时间】:2018-09-09 00:02:09
【问题描述】:
我用以下代码创建了一个页面 indes.php:
<?php
include "db.php";
$select="SELECT *FROM alldocs ";
$query=mysqli_query($conn,$select);
<form action="upload.php" method="POST" enctype="multipart/form-data">
<input type="text" name="name" placeholder="name"><br><br>
<input type="file" name="file" ><br><br>
<input type="submit" name="submit" value="submit"><br><br>
</form>
<div class="box-info">
<?php
while($row=mysqli_fetch_assoc($query)){
echo $row['name'].'<br>'.
'<a href="downloud.php?get=$path">downloud file</a> <br>';}
?>
</div>
然后我像这样创建了upload.php
<?php
if(isset($_POST['submit'])){
include "db.php";
$name =$_POST['name'];
$file =$_FILES['file'];
$fileName =$file['name'];
$fileTmp =$file['tmp_name'];
$path='downloud/$fileName';
if(move_uploaded_file($fileTmp , $path)){
$insert=" INSERT INTO alldocs(name,path) VALUES('$name','$path')";
$query=mysqli_query($conn,$insert);
header("Location:index.php");
}}
?>
现在我尝试将链接中的 index.pho 连接到 get=$path 以便我可以进入下一页,这样就可以像这样从数据库下载路径:
<?php
if(isset($_GET['get'])){
include "db.php";
$path=$_GET['get'];
$select="SELECT*FROM alldocs WHERE path='$path';" ;
$query=mysqli_query($conn,$select);
header('Conetent-type:application/octet-stream');
header('Conetent-disposition:attachment;filename="'.basename($path).'"' );
header('Conetent-lenght:.filesize($path)');
readfile($path);
}
?>
所以,如果有人可以向我指出我在这段代码中犯的错误,因为我总是收到这个错误WARNING: readfile($path); as undefined!
【问题讨论】:
-
header('Conetent-lenght:中有拼写错误 - 您是从视频教程还是书籍中自己输入的? -
是的,老实说。我不熟悉 php !我可以设法在数据库中上传文件,但不能下载并逐步学习
-
所有
Conetent标头前缀都应该是Content。您的 SQL 查询存在 SQL 注入漏洞,因此暂时不要发布。 -
No halfer,我没有保护。我只是好奇下载代码的架构是如何工作的,我是 PHP 的新手,我仍在逐步学习。我知道有时我会问愚蠢的问题 !但我希望有人能理解!谢谢你的关注。
标签: php database mysqli download