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

php操作mysql关于文件上传、存储的更多相关文章

  1. Java 客户端操作 FastDFS 实现文件上传下载替换删除

    FastDFS 的作者余庆先生已经为我们开发好了 Java 对应的 SDK.这里需要解释一下:作者余庆并没有及时更新最新的 Java SDK 至 Maven 中央仓库,目前中央仓库最新版仍旧是 1.2 ...

  2. django-自定义文件上传存储类

    文件储存API:https://yiyibooks.cn/xx/django_182/ref/files/storage.html 编写自定义存储系统:https://yiyibooks.cn/xx/ ...

  3. nginx -stream(tcp连接)反向代理配置 实现代理mysql以及文件上传

    原文链接:https://blog.csdn.net/Activity_Time/article/details/95767390 1. stream模块安装 nginx默认安装的时候无法加载流str ...

  4. Excel文件上传存储到数据库

  5. PHP文件上传和文件操作案例

    <?php /* *文件配置变量$dirname是目录名称 */ session_start(); $dirname = 'upload'; $fileClass = new fileClass ...

  6. python-web自动化-文件上传操作(非input标签的上传,需要借助第三方工具)

    文件上传操作 一.文件上传分两种情况:1. 如果是input可以直接输入路径的,可以直接调send_keys输入路径 2. 非input标签的上传,需要借助第三方工具:    2.1 Autolt 需 ...

  7. PHP实现大文件上传和下载

    一提到大文件上传,首先想到的是啥??? 没错,就是修改php.ini文件里的上传限制,那就是upload_max_filesize.修改成合适参数我们就可以进行愉快的上传文件了.当然啦,这是一般情况下 ...

  8. 【FTP】FTP文件上传下载-支持断点续传

    Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常 ...

  9. 文件上传小技巧/后端处理【以php示例】

    引语:在上一篇文章中说到,在页面中可以用隐藏的方式让你的上传页面看起来漂亮.但是这对于性能来说,并没有什么卵用,那么在后台的处理中,难道就没有一些处理技巧么?所谓后台的技巧,应该要包括上传得快一点,上 ...

随机推荐

  1. 解决alert在ios版微信中显示url的问题(重写alert)

    为了解决alert在ios版微信中显示url的问题 window.alert = function(name){ var iframe = document.createElement("I ...

  2. 数据可视化之PowerQuery篇(三)学会使用PowrQuery的自定义函数

    https://zhuanlan.zhihu.com/p/64415763 使用Power Query进行复杂一些的数据处理,离不开M函数,目前已经有超过700个函数了,基本上各式各样的数据处理需求都 ...

  3. Centos7之LNMP环境编译安装

    Centos7之LNMP环境编译安装 一.系统环境准备 注:安装时间过长,只做参考!!!1.系统信息 [root@localhost ~]# uname -r 3.10.0-957.el7.x86_6 ...

  4. bzoj3687简单题*

    bzoj3687简单题 题意: 给个集合,求所有子集的元素和的异或和.集合元素个数≤1000,整个集合的元素和≤2000000 题解: 用bitset维护每个子集元素和的个数是奇数还是偶数.每次读入一 ...

  5. Java多线程详解总结

    一.基本概念 程序(program): 是为完成特定任务.用某种语言编写的一组指令的集合.即指一 段静态的代码,静态对象. 进程(process):是程序的一次执行过程,或是正在运行的一个程序.是一个 ...

  6. 【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播

    摘要:看我如何通过API Explorer 的SDK接口搞定千万级流量直播. 最近几个月,我的变化其实还蛮大的,从一个被实习生“无视”的“前浪”,转变成了不仅能够解决技术问题还能解决业务问题(顺手还能 ...

  7. Java中static、final和static final(final static)的区别(转)

    大佬的总结(大赞!) final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变. final修饰的属性跟具体对象有关, ...

  8. python-scrapy爬虫框架爬取拉勾网招聘信息

    本文实例为爬取拉勾网上的python相关的职位信息, 这些信息在职位详情页上, 如职位名, 薪资, 公司名等等. 分析思路 分析查询结果页 在拉勾网搜索框中搜索'python'关键字, 在浏览器地址栏 ...

  9. tomcat 认证爆破之custom iterator使用

    众所周知,BurpSuite是渗透测试最基本的工具,也可是神器,该神器有非常之多的模块:反正,每次翻看大佬们使用其的骚操作感到惊叹,这次我用其爆破模块的迭代器模式来练练手[不喜勿喷] 借助vulhub ...

  10. 多云架构下,JAVA微服务技术选型实例解析

    [摘要] 本文介绍了基于开源自建和适配云厂商开发框架两种构建多云架构的思路,以及这些思路的优缺点. 微服务生态 微服务生态本质上是一种微服务架构模式的实现,包括微服务开发SDK,以及微服务基础设施. ...