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
php操作mysql关于文件上传、存储的更多相关文章
- Java 客户端操作 FastDFS 实现文件上传下载替换删除
FastDFS 的作者余庆先生已经为我们开发好了 Java 对应的 SDK.这里需要解释一下:作者余庆并没有及时更新最新的 Java SDK 至 Maven 中央仓库,目前中央仓库最新版仍旧是 1.2 ...
- django-自定义文件上传存储类
文件储存API:https://yiyibooks.cn/xx/django_182/ref/files/storage.html 编写自定义存储系统:https://yiyibooks.cn/xx/ ...
- nginx -stream(tcp连接)反向代理配置 实现代理mysql以及文件上传
原文链接:https://blog.csdn.net/Activity_Time/article/details/95767390 1. stream模块安装 nginx默认安装的时候无法加载流str ...
- Excel文件上传存储到数据库
- PHP文件上传和文件操作案例
<?php /* *文件配置变量$dirname是目录名称 */ session_start(); $dirname = 'upload'; $fileClass = new fileClass ...
- python-web自动化-文件上传操作(非input标签的上传,需要借助第三方工具)
文件上传操作 一.文件上传分两种情况:1. 如果是input可以直接输入路径的,可以直接调send_keys输入路径 2. 非input标签的上传,需要借助第三方工具: 2.1 Autolt 需 ...
- PHP实现大文件上传和下载
一提到大文件上传,首先想到的是啥??? 没错,就是修改php.ini文件里的上传限制,那就是upload_max_filesize.修改成合适参数我们就可以进行愉快的上传文件了.当然啦,这是一般情况下 ...
- 【FTP】FTP文件上传下载-支持断点续传
Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常 ...
- 文件上传小技巧/后端处理【以php示例】
引语:在上一篇文章中说到,在页面中可以用隐藏的方式让你的上传页面看起来漂亮.但是这对于性能来说,并没有什么卵用,那么在后台的处理中,难道就没有一些处理技巧么?所谓后台的技巧,应该要包括上传得快一点,上 ...
随机推荐
- The Shortest Statement,题解
题目链接 分析: 还是很明白的题意,直接分析问题,首先,这一题真的是给spfa用武之地,m比n大不超过20,但是这并不能使暴力不t,我们考虑一下如何改进一下,我们这样想,这个图只比它的生成树多最多21 ...
- python 并发专题(四):yield以及 yield from
一.yield python中yield的用法很像return,都是提供一个返回值,但是yield和return的最大区别在于,return一旦返回,则代码段执行结束,但是yield在返回值以后,会交 ...
- Nslookup命令的使用 - [详细]
用法一.查询IP地址 nslookup最简单的用法就是查询域名对应的IP地址,包括A记录和CNAME记录,如果查到的是CNAME记录还会返回别名记录的设置情况.其用法是: nslookup 域名 # ...
- HDFS+ClickHouse+Spark:从0到1实现一款轻量级大数据分析系统
在产品精细化运营时代,经常会遇到产品增长问题:比如指标涨跌原因分析.版本迭代效果分析.运营活动效果分析等.这一类分析问题高频且具有较高时效性要求,然而在人力资源紧张情况,传统的数据分析模式难以满足.本 ...
- git和github连接权限(这是一个简便方法,不是很安全,建议大家还是用ssh解决)
在使用,git从github上clone下来代码后. 我们再工作区进行编辑,然后提交. 最后我们想要将我们的改变推送到github上. 但是往往这个时候,我们可能会面临这样的问题. 我们没有权限将代码 ...
- day1 python计算器底层运作,注释及变量
每日一记 utf-8 国际标准编码(可变长的unicode编码)中文3字节,英文数字特殊字符1字节 gbk 中国标准编码 中文2字节,英文数字特殊字符1字节 1.原码,反码,补码 "&quo ...
- Qt_IO系统_文件
主要参考: devbean.net 豆子的博客 参考书:<QtCreator 快速入门>第三版 目录 QFile 如何使用QFile QFile 和QFileInfo Demo 文件操作是 ...
- svg 使用中的疑惑点
svg,g ,defs,symbol 都是容器元素,使用起来给人许多疑惑 svg-spirite-loader在页面生成的svg标签有什么特点? svg标签里面的symbol有什么用? 这些标签能够随 ...
- Kubernetes的10个基本事实!你知道几个?k8s与Docker又有何不同?
无论您是Kubernetes的新手还是只是想获得更多知识,这篇文章都会帮到您! Kubernetes是一个增长的趋势.近年来,K8s技术经历了从小型开源Google项目到Cloud Native Co ...
- 大型Java进阶专题(九) 设计模式之总结
前言 关于设计模式的文章就到这里了,学习这门多设计模式,你是不是有这样的疑惑,发现很多设计模式很类似,经常会混淆某些设计模式.这章节我们将对设计模式做一个总结,看看各类设计模式有什么区别.需要注意 ...