Php Uploadscript实际上并不保存文件
我需要上传一些信息,如名称,图像到数据库使用PHP 我试着这样做: Add\u tour.php:Php Uploadscript实际上并不保存文件,php,Php,我需要上传一些信息,如名称,图像到数据库使用PHP 我试着这样做: Add\u tour.php: <?php $app=new app(); $targetDir = "/upload/"; if(isset($_POST['tour_name'])) { $tour_name=isset($_POST['tour_name'])?trim($_POST['tour_name']):''; $_SESSION['tour_name']=$tour_name; } i
<?php
$app=new app();
$targetDir = "/upload/";
if(isset($_POST['tour_name'])) {
$tour_name=isset($_POST['tour_name'])?trim($_POST['tour_name']):'';
$_SESSION['tour_name']=$tour_name;
}
if(isset($_POST['tour_img'])) {
$tour_img=isset($_POST['tour_img'])?trim($_POST['tour_img']):'';
$_SESSION['tour_img']=$tour_img;
move_uploaded_file($_FILES["tour_img"]["tmp_name"],$targetDir);
}
$ID=$app->add_tour();
?>
<form action="/admin/add_tour.php" method="post">
<input type="text" class="form-control" id="tour_name" name="tour_name">
<input type="file" data-toggle="custom-file-input" id="tour_img" name="tour_img">
</form>
问题是,只有文件名才会添加到数据库中。文件本身未上载到“上载”目录。您的代码中有一个错误:
move_uploaded_file($_FILES["tour_img"]["tmp_name"], $targetDir);
您还忘了传递文件名。代码应为:
move_uploaded_file($_FILES["tour_img"]["tmp_name"], $targetDir . $_FILES["tour_img"]["name"]);
还要确保标记中有
enctype=“multipart/form data”
。在表单中使用以下属性
enctype=“多部分/表单数据”
我不知道$this->db->escape()
中有什么,但这肯定不会阻止SQL注入。使用事先准备好的陈述instead@Cid$this->db->escape()
是用于转义查询输入的codeigniter函数。@Cid和“代码应该是”-不,它应该不是<代码>$\u文件[“tour\u img”][“name”]是由客户端指定的,因此它不应该被信任,至少在没有任何进一步验证的情况下是如此。我现在在第26行的/admin/add\u tour.php中得到了未定义的索引:tour\u img。第26行是:移动上传的文件($文件[“tour\u img”][“tmp\u name”],$targetDir.$文件[“tour\u img”][“name”]);这意味着你不能在这里得到文件,你能试着打印$u文件,看看它是否给你打印了一个文件数组吗?我都做了。我通过添加if(isset($\u POST['submit'])修复了未定义的索引错误。我还添加了您提到的标签,现在DB中没有添加任何内容(甚至图像名称)。我相信问题出在app.class.phpI文件中,我仍然陷在这个问题中。有什么想法可以试试吗?
move_uploaded_file($_FILES["tour_img"]["tmp_name"], $targetDir . $_FILES["tour_img"]["name"]);