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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介:
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. ?>  

 

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
7月前
|
JSON 数据处理 PHP
PHP数组处理技巧:高效操作数据集合
PHP数组处理技巧:高效操作数据集合
|
7月前
|
JSON 安全 大数据
PHP中的数组处理艺术:灵活高效的数据操作
PHP中的数组处理艺术:灵活高效的数据操作
|
7月前
|
JSON 定位技术 PHP
PHP技巧:解析JSON及提取数据
这就是在PHP世界里探索JSON数据的艺术。这场狩猎不仅仅是为了获得数据,而是一种透彻理解数据结构的行动,让数据在你的编码海洋中畅游。通过这次冒险,你已经掌握了打开数据宝箱的钥匙。紧握它,让你在编程世界中随心所欲地航行。
241 67
|
设计模式 数据库连接 PHP
PHP中的设计模式:提升代码的可维护性与扩展性在软件开发过程中,设计模式是开发者们经常用到的工具之一。它们提供了经过验证的解决方案,可以帮助我们解决常见的软件设计问题。本文将介绍PHP中常用的设计模式,以及如何利用这些模式来提高代码的可维护性和扩展性。我们将从基础的设计模式入手,逐步深入到更复杂的应用场景。通过实际案例分析,读者可以更好地理解如何在PHP开发中应用这些设计模式,从而写出更加高效、灵活和易于维护的代码。
本文探讨了PHP中常用的设计模式及其在实际项目中的应用。内容涵盖设计模式的基本概念、分类和具体使用场景,重点介绍了单例模式、工厂模式和观察者模式等常见模式。通过具体的代码示例,展示了如何在PHP项目中有效利用设计模式来提升代码的可维护性和扩展性。文章还讨论了设计模式的选择原则和注意事项,帮助开发者在不同情境下做出最佳决策。
|
10月前
|
数据库连接 PHP 数据库
【YashanDB知识库】PHP使用ODBC驱动无法获取长度为256char以上的数据
【YashanDB知识库】PHP使用ODBC驱动无法获取长度为256char以上的数据
|
10月前
|
Oracle 关系型数据库 MySQL
【YashanDB知识库】php查询超过256长度字符串,数据被截断的问题
本文分析了YashanDB中PHP通过ODBC查询数据时出现的数据截断问题,表现为超过256字节的数据被截断,以及isql工具无法显示超过300字节长度的数据。问题根源在于YashanDB的ODBC驱动仅支持单次查询,且PHP扩展库默认缓冲区限制。解决方案包括改用PHP ODBC扩展库而非PDO_ODBC,以及调整isql代码逻辑以支持循环取数或一次性读取完整数据。文章还提供了具体代码示例和规避方法,适用于23.2.4.14及更早版本。
【YashanDB知识库】php查询超过256长度字符串,数据被截断的问题
|
数据采集 JSON JavaScript
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
本文介绍了如何使用PHP模拟表单提交并结合代理IP技术抓取京东商品的实时名称和价格,特别是在电商大促期间的数据采集需求。通过cURL发送POST请求,设置User-Agent和Cookie,使用代理IP绕过限制,解析返回数据,展示了完整代码示例。
289 3
如何通过PHP爬虫模拟表单提交,抓取隐藏数据
|
11月前
|
Oracle 关系型数据库 MySQL
【YashanDB 知识库】php 查询超过 256 长度字符串,数据被截断的问题
php 查询超过 256 字节数据,显示被截断:yashandb 的 odbc 驱动接口 SQLGetData 现在只支持单次查询,不支持多次取数据的操作。 isql 显示不出来,isql 工具最大只查询 300 长度的数据,超过了该长度未正常显示。
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
267 5
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
317 3