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

最新文章

  1. 用微信小程序开发的Canvas绘制可配置的转盘抽奖
  2. Arduino101学习笔记(十二)&mdash;&mdash; 101定时器中断
  3. HTML5属性运用
  4. min.css----全世界最快的CSS框架
  5. Qt的学习资料比起其它C/C++的GUI组件来说已经算很全的了
  6. .Net设计模式_工厂模式(2)
  7. Mongodb query查询
  8. JS常用扩展
  9. C#编写QQ找茬外挂
  10. 前端(一)之 HTML
  11. RESTful 架构详解
  12. c语言cgi笔记
  13. linux基础之条件测试
  14. 深入浅出 - vue变化侦测原理
  15. Code Fragment-UI加载策略之-可视者优先加载
  16. kubectl 获取信息
  17. Asp.net mvc 实时生成缩率图到硬盘
  18. [黑科技]跑的比fread还快的cin挂和cout挂
  19. JAVA类与对象---实例变量与类变量的区别,实例方法和类方法的区别
  20. 初学Direct X(10)—— D3D基础预备知识

热门文章

  1. 包含min函数的栈(剑指offer-20)
  2. 虚拟机 - 桥接模式下,虚拟网卡没有 ip
  3. day03 编程语言介绍
  4. day18 作业
  5. 04 flask源码剖析之LocalStack和Local对象实现栈的管理
  6. java 面向对象(十七):单元测试方法
  7. Flask 基础组件(一):基本使用
  8. Django适当进阶篇
  9. pointer-events:none 的应用
  10. gvim使用总结