php - 在mysql中通过用户ID上传文件?

标签 php mysql

我有两张表,一张用于用户,一张用于图像 我想要实现的是,如果我登录,我可以为用户上传图像 由于不允许任何用户上传图片,我想为他们上传图片,每个用户都可以查看自己的图片。我有一个可以上传多张图片的工作代码,但现在 如何将它们分配给特定用户。 下面的代码只是上传多张图片。

<form action="" method="POST" enctype="multipart/form-data">
    <input type="file" name="files[]" multiple/>
    <input type="submit"/>
</form>
<?php
$username = (isset ($_POST['username']));
if(isset($_FILES['files'])){
    $query = "INSERT into tish_images(`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`)
             VALUES(:FILE_NAME,:FILE_SIZE,:FILE_TYPE)";
    $stmt  = $con->prepare($query);
    $errors= array();
    foreach($_FILES['files']['tmp_name'] as $key => $error ){
        if ($error != UPLOAD_ERR_OK) {
            $errors[] = $_FILES['files']['name'][$key] . ' was not uploaded.';
            continue;
        }
        $file_name = $key.$_FILES['files']['name'][$key];
        $file_size = $_FILES['files']['size'][$key];
        $file_tmp  = $_FILES['files']['tmp_name'][$key];
        $file_type = $_FILES['files']['type'][$key];  
        if($file_size > 2097152){
            $errors[] = 'File size must be less than 2 MB';
            continue;
        }
        try{       
            $stmt->bindParam( ':FILE_NAME', $file_name , PDO::PARAM_STR );
            $stmt->bindParam( ':FILE_SIZE', $file_size, PDO::PARAM_STR );
            $stmt->bindParam( ':FILE_TYPE', $file_type, PDO::PARAM_STR );
            $stmt->execute();

            $desired_dir="image_uploads";

            if(is_dir($desired_dir)==false){
                mkdir($desired_dir, 0700);// Create directory if it does not exist
            }
            if(is_file($desired_dir.'/'.$file_name)==false){
                move_uploaded_file($file_tmp,$desired_dir.'/'.$file_name);
            }else{    //rename the file if another one exist
                $new_file=$desired_dir.'/'.$file_name.time();
                move_uploaded_file($file_tmp,$new_file) ;               
            }
        }catch(PDOException $e){
            $errors[] = $file_name . 'not saved in db.';
            echo $e->getMessage();
        }   
    }
    if(empty($error)){
        echo "Success";
    }
}
?>

最佳答案

你只能做一件事。在图像表中为 user_id 创建一列,并在插入图像时相应地插入相应的 user_id。因此,在前端,您可以拥有所有用户的下拉列表,或者如果您使用 session 来存储用户 ID,那么您可以轻松获得。

如果您还需要其他任何东西,请告诉我。

关于php - 在mysql中通过用户ID上传文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14748700/

相关文章:

mysql 带条件的 TableView

php - laravel 无法识别 ISO8601 格式的日期时间

php - 上传的 csv 不起作用

mysql - 创建 View 连接两个具有相同列且没有重复的表

点击页面其他类别后 PHP session 变量丢失

php - Laravel 中特定模型关系的热切加载

php - 无法从 PHP 脚本连接 Mysql 服务器

php - 主管 : How do I execute custom php command if any of worker e. g。进程 ID 123 停止

php - var_dump 显示数据,但 echo 说未定义索引 - 不知所措

php - 在 php 中使用 EST、CET、PST 等时区