php - 我正在尝试将一个文件上传到本地主机,但无法正常工作

标签 php mysql

我正在尝试将一个文件上传到本地主机服务器,但它不起作用。我正在尝试使用 chmod 为文件所在的文件夹授予权限,但我不明白。表单在一个名为 index.php 的文件中动态打印,当单击提交时,数据将被接收到同一个名为 recExpediente.php 的 php 文件中。

PHP

    <? 
ini_set('error_reporting', E_ALL);

    require('conectaDemo.php');   

    if (is_uploaded_file($_FILES['Foto']['tmp_name'])) {
            $cSQL="SELECT NIF FROM CLIENTES WHERE ID_CLIENTE=?";
            $stmt=$oConni->prepare($cSQL) or die($oConni->error);
            $stmt->bind_param('i',$_POST['selDesc2']);
            $stmt->execute();                               
            $stmt->bind_result($DNI);
            if ($stmt->fetch()) {
                chmod('/var/www/pracRemesas/'.$DNI.'/', 0777);
                echo '/var/www/pracRemesas/'.$DNI.'/';
                $uploaddir='/var/www/pracRemesas/'.$DNI.'/';
             }
             $stmt->close();
            $uploadfile = $uploaddir . basename($_FILES['Foto']['name']); 
            move_uploaded_file($_FILES['Foto']['tmp_name'], $uploadfile);
            $cFoto=basename($_FILES['Foto']['name']);
            $xSQL = "INSERT INTO EXPEDIENTES (ID_CLIENTE, DOCUMENTO, 
            OBSERVACIONES) VALUES(?,?,?)";
            $stmt = $oConni->prepare($xSQL);
            $stmt->bind_param('iss', $_POST['selDesc2'], $cFoto, $_POST['observ']);
            $stmt->execute();
            $stmt->close();

}


   if (isset($_POST['newid'])) {  
            $cSQL="SELECT ID_CLIENTE, NOMBRE FROM CLIENTES";
            $stmt=$oConni->prepare($cSQL) or die($oConni->error);
            $stmt->execute();                               
            $stmt->bind_result($ID_CLIENTE, $NOMBRE);
            echo'<form name="nuevoExp" id="frmLogin" action="recExpediente.php" method="POST" enctype="multipart/form-data">';
            echo'<select id="selDesc2" name="selDesc2">';
            echo'<option value=-1>Seleccione cliente</option>';
             while ($stmt->fetch()) {
                echo'<option value="'.$ID_CLIENTE.'">'.$NOMBRE.'</option>';
            }   
            $stmt->close();
            echo'</select><br>'; 
            echo'<input type="file" name="Foto" id="Foto"><br>';
            echo'Observaciones<input type="text" name="observ" id="observ"><br>';
            echo'<input  type="submit" name="butEnv" id="butEnv" value="Enviar"/>';
            echo'</form>';
}?>

最佳答案

您的问题是可变范围。您在 if 语句中定义 $uploaddir ,它只在该语句中存在。你需要先定义它,你可以在if语句中修改它。

这导致您的代码实际上是

$uploadfile = basename($_FILES['Foto']['name']);

我建议对您的代码和故障保险进行更多检查。您可以在 if ($stmt->fetch()) { 中包含上传代码和插入代码。如果您移动 if 语句中的所有内容,则无需为 $uploaddir 问题更改任何内容。

关于php - 我正在尝试将一个文件上传到本地主机,但无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14859941/

相关文章:

php - Zend Framework 中的大量 DESCRIBE 查询

php - 获取MySQL查询的计数结果PHP

MYSQL:使用 where 子句选择性转储数据库

mysql - sql中select distinct id和select distinct *的区别

mysql - 从 laravel 5.4 升级到 laravel 5.5 后出错

php - 需要算法和实现帮助 - 比较 2 个文件

php - PHP post 请求没有显示任何内容

php - Magento:显示子类别列表

javascript - 在 Laravel 中获取 AJAX 数据

mysql - 如何在 SQL 表中的 2 个数据之间进行选择?