php 图片上传 二进制数据模式

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:
1将文件存到项目路径下,保存图片的路径

2.二进制的数据生成对应的图片,如果你想把二进制的数据,比如说图片文件和HTML文件,直接保存在你的MySQL数据库,那么这篇文章就是为你而写的!我将告诉你怎样通过HTML表单来储存这些文件,怎样访问和使用这些文件。   

 

PHP 自动将图片转换成BASE64 

Java代码   收藏代码
  1. <?php  
  2. function base64_encode_image ($filename='string',$filetype='string') {  
  3.     if ($filename) {  
  4.         $imgbinary = fread(fopen($filename, "r"), filesize($filename));  
  5.         //file_put_contents('b.png',$imgbinary);  
  6.         return 'data:image/' . $filetype . ';base64,' . base64_encode($imgbinary);  
  7.     }  
  8. }  
  9. ?>  
  10. <img src="<?php echo base64_encode_image ('a.png','png'); ?>"/>  

二、在MySQL中建立一个新的database    
  首先,你必须在你的MySQL中建立一个新的数据库,我们将会把那些二进制文件储存在这个数据库里。在例子中我会使用下列结构,为了建立数据库,你必须做下列步骤:

Java代码   收藏代码
  1. CREATE TABLE `binary_data` (  
  2.   `id` int(4) NOT NULL AUTO_INCREMENT,  
  3.   `description` char(50) DEFAULT NULL,  
  4.   `bin_data` longblob,  
  5.   `filename` char(50) DEFAULT NULL,  
  6.   `filesize` char(50) DEFAULT NULL,  
  7.   `filetype` char(50) DEFAULT NULL,  
  8.   PRIMARY KEY (`id`)  
  9. ) ENGINE=InnoDB DEFAULT CHARSET=utf-8;  

  输入如下命令:   

Java代码   收藏代码
  1. <?php  
  2. if ($_FILES ['myfile'] != "none" && $_FILES ['myfile'] != "") {  
  3.     $time_limit = 60;  
  4.     set_time_limit ( $time_limit );  
  5.     $file_type = $_FILES ['myfile'] ['type'];  
  6.     $file_name = $_FILES ['myfile'] ['name'];  
  7.     $file_size = $_FILES ['myfile'] ['size'];  
  8.     $fp = fopen ( $_FILES ['myfile'] ['tmp_name'], "rb" );  
  9.     if (! $fp)  
  10.         die ( "file open error" );  
  11.     $file_data = addslashes ( fread ( $fp, $file_size ) );  
  12.     fclose ( $fp );  
  13.     /** 等价 
  14.     $file_data = file_get_contents($_FILES["myfile"]['tmp_name']); 
  15.      */  
  16.     $conn = mysql_connect ( "localhost""root""root" );  
  17.     if (! $conn)  
  18.         die ( "error : mysql connect failed" );  
  19.     mysql_select_db ( "test", $conn );  
  20.     $sql = "insert into receive(file_data,file_type,file_name,file_size)values ('$file_data','$file_type','$file_name',$file_size)";  
  21.     $result = mysql_query ( $sql );  
  22.     $id = mysql_insert_id ();  
  23.     mysql_close ( $conn );  
  24.     set_time_limit ( 30 ); //恢复缺省超时设置  
  25.     echo "上传成功--- ";  
  26.     echo "<a href='show_info.php?id=$id'>显示上传文件信息</a>";  
  27. else {  
  28.     echo "你没有上传任何文件";  
  29. }  
  30. ?>  

(5)show_add.php //从数据库里取出文件内容 http://hudeyong926.iteye.com/blog/898072

Java代码   收藏代码
  1. <?php  
  2. $data = mysql_result($result, 0"file_data");  
  3. $type = mysql_result($result, 0"file_type");  
  4. $fileName = mysql_result($result, 0"file_name");  
  5. mysql_close($conn);  
  6.   
  7. $filePath = 'download/' . $userid . "/" . $fileName;  
  8. file_put_contents($fileName,$data);  
  9. header('Location: /download.php?fileName=' . $fileName . '&file=' . $filePath);  
  10. /* 
  11. //download.php 
  12. $fileName = $_GET['fileName']; 
  13. $file_dir = RelativePath . $_GET['file']; 
  14. $file = @ fopen($file_dir, "r"); 
  15. if (!$file) { 
  16.     echo "File does not exist."; 
  17. } else { 
  18.     ob_end_clean(); 
  19.     Header("Content-type: application/octet-stream"); 
  20.     Header("Content-Disposition: attachment; filename=" . $fileName); 
  21.     while (!feof($file)) { 
  22.         echo fread($file, 50000); 
  23.     } 
  24.     fclose($file); 
  25. } 
  26. */  
  27. ?>  

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5天前
|
JSON PHP 数据格式
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
原生php实现列表接口+分页接口+排序接口组合使用+包括测试数据(不加任何封装)
|
5天前
|
存储 关系型数据库 MySQL
PHP 如何使用 Excel 处理数据
【1月更文挑战第1天】PHP 如何使用 Excel 处理数据
50 1
|
7月前
|
小程序 前端开发 PHP
PHP实现生成小程序二维码带参数进入指定页面、小程序URL scheme实现携带数据跳转小程序
PHP实现生成小程序二维码带参数进入指定页面、小程序URL scheme实现携带数据跳转小程序
113 0
php案例:$_ENV的数据怎么样才能显示出来.$_ENV的简单运用
php案例:$_ENV的数据怎么样才能显示出来.$_ENV的简单运用
php案例:$_ENV的数据怎么样才能显示出来.$_ENV的简单运用
php案例:用代码的方式创建目录+文件+写入数据(都由你定)
php案例:用代码的方式创建目录+文件+写入数据(都由你定)
php案例:用代码的方式创建目录+文件+写入数据(都由你定)
|
5天前
|
JSON PHP 数据格式
php 删掉空的数组 json数据. 空数据(false 0 ““ null)
php 删掉空的数组 json数据. 空数据(false 0 ““ null)
php 删掉空的数组 json数据. 空数据(false 0 ““ null)
|
5天前
|
JSON PHP 数据格式
php对‘[{“id“:“1“,“name“:“cyg”},{“id“:“2“,“name“:“liwen“}]json数据进行修改删除操作
php对‘[{“id“:“1“,“name“:“cyg”},{“id“:“2“,“name“:“liwen“}]json数据进行修改删除操作
php对‘[{“id“:“1“,“name“:“cyg”},{“id“:“2“,“name“:“liwen“}]json数据进行修改删除操作