zoukankan      html  css  js  c++  java
  • php操作mysql关于文件上传、存储

    php+前端+mysql实现文件上传并储存

    我们都知道很多网站都需要上传文件,最普遍的就是图片上传,即是用户头像等等;

    关于mysql+php实现文件查询,存储大致两个方式,

    1、直接把文件写入mysql中,mysql提供了二进制文件存储类型,

    详情可以看看这个https://blog.csdn.net/treeshy/article/details/50925168

    2、第二种相对比较简单,直接在mysql的字段中储存文件路径就好。

    第二种操作演示:

    1、使用html的form表单上传文件;

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>文件传输、储存入数据库测试</title>
    </head>
    <body>
    <html>
    <head>
    <title>文件上传</title>
    </head>
    <body>
    <form action="test02.php" method="post" enctype="multipart/form-data">
    description:
    <input type="text" name="form_description"><br>
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
    选择文件:<input type="file" name="myfile">
    <input type="submit" value="上传文件">
    </form>

    </body>
    </html>

    </form>

    </body>
    </html>

    2、conn.php,连接mysql数据库

    <?php
    header("Content-Type:text/html;charset=utf8");
    $mysql_server_name = "localhost:3306"; //连接数据库端口
    $mysql_username = "root"; //用户名
    $mysql_password = "15284"; //密码
    $mysql_database = "binary_data"; //数据库名称
    $conn = new mysqli($mysql_server_name, $mysql_username, $mysql_password, $mysql_database); //构造函数mysql
    // 检测连接
    if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
    }else{
    echo '连接数据库成功!';
    }

    3、insert.php,php操作mysql数据库

    <?php

    //include_once 'conn.php'连接数据库
    include_once 'conn.php';
    //获取对文件的描述
    $description = $_POST['form_description'];

    //获取文件
    $mypic = $_FILES["myfile"];

    if (!empty($mypic)) {
    // 获取文件的信息
    $error = $mypic["error"];
    $picname = $mypic["name"];
    $picsize = $mypic["size"];
    $pictype = $mypic["type"];
    // 获取文件的扩展名
    $type = strstr($picname, ".");
    // 为文件命名
    $pics = time() . rand(1, 9999) . $type;
    // 设置文件存储路径,为避免中文乱码,采用iconv()函数设置编码
    $dir = 'uploads/' . iconv('UTF-8', 'gbk', basename($_FILES['myfile']['name']));
    // 将文件存储在$dir目录下
    move_uploaded_file($_FILES['myfile']['tmp_name'], $dir);

    if ($error == UPLOAD_ERR_OK && $picsize > 0) {
    // 获取文件储存路径
    $pathname = 'uploads/' . $picname;
    }
    // 将信息写入mysql数据表中
    $sql = "INSERT INTO data_test(description,bin_data,filename,filesize,filetype)"

    . " VALUES ('$description','$pathname','$picname','$picsize','$pictype')";
    $conn->query($sql);
    }

    4、text.sql建库,建表命令。

    -- 创建数据库
    create database IF NOT EXISTS binary_data;
    use binary_data;
    -- 创建数据表
    CREATE TABLE IF NOT EXISTS data_text (
    id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    description CHAR(50),
    bin_data CHAR(100),
    filename CHAR(50),
    filesize CHAR(50),
    filetype CHAR(50))ENGINE=InnoDB DEFAULT CHARSET=utf8;
    -- [ENGINE=InnoDB DEFAULT CHARSET=utf8] 表引擎InnoDB 字符集为utf-8


    关于$_FILES用法:https://www.cnblogs.com/laijinquan/p/8682282.html



  • 相关阅读:
    Unity3D 利用C#实现简单的代理模式Delegate(委托)
    代码删除文件夹,小心资源管理器报错,甚至崩溃【原】
    如何解决“应用程序并行配置不正确”问题?【原】
    STL,ATL,WTL的联系与区别
    C++虚函数表解析(转)
    学各国语言的网站大全
    The 500 Most Commonly Used Words in the English Language
    Top 100 English Verbs
    Top 100 words for advanced learners.
    TOP 100 MISSPELT/MISSPELLED WORDS IN ENGLISH
  • 原文地址:https://www.cnblogs.com/youlingdada-top/p/13415201.html
Copyright © 2011-2022 走看看