1

1 つのファイルを localhost サーバーにアップロードしようとしていますが、うまくいきません。chmod を使用して、ファイルを配置するフォルダーにアクセス許可を付与しようとしていますが、取得できません。フォームは index.php と呼ばれる 1 つのファイルに動的に出力され、送信をクリックすると、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>';
}?>
4

1 に答える 1

1

あなたの問題は可変範囲です。$uploaddirif ステートメントで、そのステートメントでのみ有効な場所を定義します。前に定義する必要があり、if ステートメント内で変更できます。

これにより、コードが実際に

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

コードのチェックとフェイル セーフを強化することをお勧めします。にアップロード コードと挿入物を含めることができますif ($stmt->fetch()) {。ステートメント内のすべてを移動する場合if、問題について何も変更する必要はありません$uploaddir

于 2013-02-13T18:35:46.867 に答える