近期的项目由于特殊原因,需要将文件存到数据库中。今天特地测试,首先在php网站上传文件,将文件读取出来——再存入到MySQL数据库中。

一、首先创建php 代码如下(网上找了段代码进行过修改):源代码 http://blog.csdn.net/jonathanlin2008/article/details/6185162

<?php
/**
* Created by PhpStorm.
* User: yun
* Date: 2015/7/10
* Time: 22:04
*/
//echo md5('ggHScquI8EzIPSwV'); if($_SERVER['REQUEST_METHOD'] == 'POST'){
$myfile=$_FILES['myfile'];
/* echo file_get_contents($myfile['tmp_name']);
exit;*/
if($myfile != "none" && $myfile != "") { //有了上传文件了 //设置超时限制时间,缺省时间为 30秒,设置为0时为不限时
$time_limit=60;
set_time_limit($time_limit); // //名字,大小,文件格式,
$file_name=$myfile['name'];
$file_size=$myfile['size'];
$file_type=strstr ( $file_name, '.' ); //把文件内容读到字符串中 直接在读取的临时文件,因为不需要将文件放到目录中。
$fp=fopen($myfile['tmp_name'], "rb");
if(!$fp) die("file open error");
$file_data = addslashes(fread($fp, $file_size));
fclose($fp); /* $dbh = new PDO ( 'mysql:host=192.168.1.168;port=3306;dbname=testdb;', 'root', '123' );*/ /*下面是将pdo进行了一个简单的封装*/
$userclass = dirname(__FILE__) . '/source/module/User.php';
require_once($userclass);
$user = new User(); /*t_testfile 表中file字段数据类型为longblod*/
$sql="insert into t_testfile (file) values ('$file_data')";
$result=$user->db->doSql($sql); //下面这句取出了刚才的insert语句的id
$id=$user->db->getLastId(); echo "上传成功--- ";
echo "<a href='show_info.php?id=$id'>显示上传文件信息</a>";
}
else {
echo "你没有上传任何文件";
}
} /* function doSql($sql, $model = 'many', $debug = false)
{
if ($debug) echo $sql;
$this->sth = $this->dbh->query($sql);
$this->getPDOError();
$this->sth->setFetchMode(PDO::FETCH_ASSOC);
if ($model == 'many') {
$result = $this->sth->fetchAll();
} else {
$result = $this->sth->fetch();
}
$this->sth = null;
return $result;
}*/
?> <!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>测试文件上传并存入到MySQL数据库中</title>
<script src="../js/jquery-1.8.3.min.js"></script> </head>
<body>
<div>
<form enctype='multipart/form-data' name='myform' action='uploadtest.php' method='post'>
<input type="file" id="myfile" name="myfile" />
<input type="submit" id="btnupload" value="上传文件"/>
</form>
</div>
</body>
</html>

二、遇到问题:文件大于php默认大小是,上传获取不到文件,直接报“你没有上传任何文件”

  所以:调整php.ini配置文件中的参数,后重启Apache服务。

调整的变量:

file_uploads = On ;        #打开文件上传选项

upload_max_filesize = 500M ;   #上传文件上限

#如果要上传比较大的文件,仅仅以上两条还不够,必须把服务器缓存上限调大,把脚本最大执行时间变长

post_max_size = 500M ;    #post上限

max_execution_time = 1800 ;      #Maximum execution time of each script, in seconds脚本最大执行时间

max_input_time = 1800 ;     #Maximum amount of time each script may spend parsing request data

memory_limit = 128M ;      #Maximum amount of memory a script may consume (128MB)内存上限

三、点击上传又出现一个问题。MySQL server has gone away,由于英语很菜,直接有道翻译:‘MySQL服务器已经消失’

百度(还是要感谢百度,和广大牛人的分享)让我找到了解决方法,不至于迷失很久。

MySQL server has gone away的解决方法:http://www.cnblogs.com/cenalulu/archive/2013/01/08/2850820.html

php mysql 数据库写入与读取取文件的更多相关文章

  1. .NET 5/.NET Core使用EF Core 5连接MySQL数据库写入/读取数据示例教程

    本文首发于<.NET 5/.NET Core使用EF Core 5(Entity Framework Core)连接MySQL数据库写入/读取数据示例教程> 前言 在.NET Core/. ...

  2. 百万行mysql数据库优化和10G大文件上传方案

    百万行mysql数据库优化和10G大文件上传方案 最近这几天正在忙这个优化的方案,一直没时间耍,忙碌了一段时间终于还是拿下了这个项目?项目中不要每次都把程序上的问题,让mysql数据库来承担,它只是个 ...

  3. Mysql数据库写入数据速度优化

    Mysql数据库写入数据速度优化 1)innodb_flush_log_at_trx_commit 默认值为1:设置为0,可以提高写入速度.  值为0:提升写入速度,但是安全方面较差,mysql服务器 ...

  4. MySQL数据库的套接字文件和pid文件

    MySQL数据库的套接字文件和pid文件 socket文件:当用Unix域套接字方式进行连接时需要的文件. pid文件:MySQL实例的进程ID文件. MySQL表结构文件:用来存放MySQL表结构定 ...

  5. saltstack自动化运维系列④之saltstack的命令返回结果mysql数据库写入

    saltstack自动化运维系列④之saltstack的命令返回结果mysql数据库写入salt的返回值写入mysql数据库:可参考:https://docs.saltstack.com/en/lat ...

  6. C# winform写入和读取TXT文件

    C# winform写入和读取TXT文件 string str;            str=this.textBox1.Text;            StreamWriter sw = new ...

  7. winform 写入和读取TXT文件

    C# winform写入和读取TXT文件 string str; str=this.textBox1.Text; StreamWriter sw = new StreamWriter(Applicat ...

  8. 在C#程序中,创建、写入、读取XML文件的方法

    一.在C#程序中,创建.写入.读取XML文件的方法 1.创建和读取XML文件的方法,Values为需要写入的值 private void WriteXML(string Values) { //保存的 ...

  9. MySQL数据库写入图片并读取图片显示到JLabel上的详解

    相较于Oracle,MySQL作为一个轻量级的开源的数据库,可谓是大大简化了我们的操作.这次我就来写一个关于数据库存入图片,获取图片的例子吧,也为了今后的复习使用.(我们一般采取存入路径的方式,而不是 ...

随机推荐

  1. 用PS绿化版出现“请卸载并重新安装该产品”的解决方法

    下载了一个CS6版本的绿化版PS,解压后发现用不了,因为是不用安装的,所以这个提示明显是没用的. 我把64位破解文件 amtlib.dll和32位破解文件 amtlib.dll都放进去试了一下,结果行 ...

  2. ShowDialog()弹出的窗体,关闭后,主窗体会闪烁的BUG

    如图,要实现下列等待界面时,等待界面是以ShowDialog弹出的,发现关闭后,主窗体会闪烁一下的BUG,搞半天没搞明白啥原因. 过了几天后,搜索了下发现,在fm.ShowDialog(),显示出来时 ...

  3. C语言处理CSV文件的方法(一)

    什么是CSV文件 CSV是 Comma-separated values (逗号分隔值)的首字母缩写,它通常是以逗号且不仅限于逗号分隔各个值,我们都叫他CSV. 看下面的例子: China, Shan ...

  4. zabbix中文配置及乱码问题

    1.切换成中文 2.发现有乱码出现 由于zabbix的web端没有中文字库,所以我们使用windows中的字体. 找到简体字的存储位置——copy到桌面或其他位置——上传到zabbix服务器——web ...

  5. Vnstat: 简单实用的网络流量统计工具

    官方主页: http://humdi.net/vnstat # Ubuntu 安装: (其本上其它发行版的包管理程序中也都包含了这款软件,请自行安装) sudo apt-get install vns ...

  6. 看IT牛人博客的哲理

    潜意识追求复杂的东西 想着用C语言包揽所有的事情 对于不同问题,不同领域 各种技术和方案都有着自己最为优势的解决方法 对要解决的问题的领域的理解很重要

  7. linux实用指令---持续更新

    awk '!a[$0]++'  a > b   删除重复行 ldd  判断某条命令需要哪些共享库文件的支持          ---------------      ]$  ldd a.out ...

  8. 使用MySQL处理百万级以上数据时,不得不知道的几个常识

    最近一段时间参与的项目要操作百万级数据量的数据,普通SQL查询效率呈直线下降,而且如果where中的查询条件较多时,其查询速度简直无法容忍.之前数据量小的时候,查询语句的好坏不会对执行时间有什么明显的 ...

  9. PC/SC

    简介 PC/SC规范由微软公司与世界其它著名的智能卡厂商组成的PC/SC工作组提出的.PC/SC规范是一个基于WINDOWS平台的一个标准用户接口(API),提供了一个从个人电脑(Personal C ...

  10. __I、__O 、__IO volatile是什么?怎么用? .

    这是ST库里面的宏定义,定义如下: #define __I volatile const /*!< defines 'read only' permissions */ #define __O ...